<SEC-DOCUMENT>0001437749-24-006640.txt : 20240305
<SEC-HEADER>0001437749-24-006640.hdr.sgml : 20240305
<ACCEPTANCE-DATETIME>20240305163441
ACCESSION NUMBER:		0001437749-24-006640
CONFORMED SUBMISSION TYPE:	10-K
PUBLIC DOCUMENT COUNT:		115
CONFORMED PERIOD OF REPORT:	20231231
FILED AS OF DATE:		20240305
DATE AS OF CHANGE:		20240305

FILER:

	COMPANY DATA:	
		COMPANY CONFORMED NAME:			NORTHWEST PIPE CO
		CENTRAL INDEX KEY:			0001001385
		STANDARD INDUSTRIAL CLASSIFICATION:	STEEL PIPE & TUBES [3317]
		ORGANIZATION NAME:           	04 Manufacturing
		IRS NUMBER:				930557988
		STATE OF INCORPORATION:			OR
		FISCAL YEAR END:			1231

	FILING VALUES:
		FORM TYPE:		10-K
		SEC ACT:		1934 Act
		SEC FILE NUMBER:	000-27140
		FILM NUMBER:		24721247

	BUSINESS ADDRESS:	
		STREET 1:		201 NE PARK PLAZA DRIVE
		STREET 2:		SUITE 100
		CITY:			VANCOUVER
		STATE:			WA
		ZIP:			98684
		BUSINESS PHONE:		3603976250

	MAIL ADDRESS:	
		STREET 1:		201 NE PARK PLAZA DRIVE
		STREET 2:		SUITE 100
		CITY:			VANCOUVER
		STATE:			WA
		ZIP:			98684
</SEC-HEADER>
<DOCUMENT>
<TYPE>10-K
<SEQUENCE>1
<FILENAME>nwpx20231231c_10k.htm
<DESCRIPTION>FORM 10-K
<TEXT>
<XBRL>
<?xml version='1.0' encoding='ASCII'?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ref="http://www.xbrl.org/2006/ref" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:naics="http://xbrl.sec.gov/naics/2023" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ixt-sec="http://www.sec.gov/inlineXBRL/transformation/2015-08-31" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ixt="http://www.xbrl.org/inlineXBRL/transformation/2020-02-12" xmlns:us-types="http://fasb.org/us-types/2017-01-31" xmlns:srt-types="http://fasb.org/srt-types/2017-01-31" xmlns:utreg="http://www.xbrl.org/2009/utr" xmlns:ix="http://www.xbrl.org/2013/inlineXBRL" xmlns:us-roles="http://fasb.org/us-roles/2017-01-31" xmlns:stpr="http://xbrl.sec.gov/stpr/2023" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:thunderdome="http://www.RDGFilings.com" xmlns:utr="http://www.xbrl.org/2009/utr" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xmlns:dei="http://xbrl.sec.gov/dei/2023" xmlns:nwpx="http://www.nwpipe.com/20231231" xmlns:rr="http://xbrl.sec.gov/rr/2023" xmlns:srt="http://fasb.org/srt/2023" xmlns:currency="http://xbrl.sec.gov/currency/2023" xmlns:sic="http://xbrl.sec.gov/sic/2023" xmlns:exch="http://xbrl.sec.gov/exch/2023" xmlns:country="http://xbrl.sec.gov/country/2023" xmlns:ecd="http://xbrl.sec.gov/ecd/2023" xmlns:us-gaap="http://fasb.org/us-gaap/2023" xmlns:dtr-types="http://www.xbrl.org/dtr/type/2020-01-21">
 <head>
  <title>nwpx20231231c_10k.htm</title>
  <!-- Generated by ThunderDome Portal - 3/5/2024 2:01:36 PM -->
  <meta http-equiv="Content-Type" content="text/html"/></head>
 <body style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; padding: 0in 0.1in; cursor: col-resize;"><div style="display: none;"><ix:header><ix:hidden>
<ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="dei:EntityCentralIndexKey" id="thunderdome-EntityCentralIndexKey">0001001385</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="dei:EntityRegistrantName" id="thunderdome-EntityRegistrantName">Northwest Pipe Co.</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="dei:AmendmentFlag" format="ixt:fixed-false" id="ixv-14273">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="dei:CurrentFiscalYearEndDate" id="ixv-14274">--12-31</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="dei:DocumentFiscalPeriodFocus" id="ixv-14275">FY</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="dei:DocumentFiscalYearFocus" id="ixv-14276">2023</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2023-10-01_2023-12-31" name="ecd:Rule10b51ArrAdoptedFlag" id="c107875783" format="ixt:fixed-false">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2023-10-01_2023-12-31" name="ecd:NonRule10b51ArrAdoptedFlag" id="c107876477" format="ixt:fixed-false">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2023-10-01_2023-12-31" name="ecd:Rule10b51ArrTrmntdFlag" id="c107876478" format="ixt:fixed-false">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2023-10-01_2023-12-31" name="ecd:NonRule10b51ArrTrmntdFlag" id="c107876479" format="ixt:fixed-false">false</ix:nonNumeric>
<ix:nonFraction id="c107876407" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:AllowanceForDoubtfulAccountsReceivable" scale="3" format="ixt:num-dot-decimal" decimals="-3">121</ix:nonFraction>
<ix:nonFraction id="c107876408" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:AllowanceForDoubtfulAccountsReceivable" scale="3" format="ixt:num-dot-decimal" decimals="-3">369</ix:nonFraction>
<ix:nonFraction id="c107877899" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:CommitmentsAndContingencies" scale="0" xsi:nil="true"></ix:nonFraction>
<ix:nonFraction id="c107877900" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:CommitmentsAndContingencies" scale="0" xsi:nil="true"></ix:nonFraction>
<ix:nonFraction id="c107876409" contextRef="i_2023-12-31" unitRef="USDPerShare" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.01</ix:nonFraction>
<ix:nonFraction id="c107876410" contextRef="i_2022-12-31" unitRef="USDPerShare" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.01</ix:nonFraction>
<ix:nonFraction id="c107876411" contextRef="i_2023-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesAuthorized" scale="0" format="ixt:num-dot-decimal" decimals="INF">10,000,000</ix:nonFraction>
<ix:nonFraction id="c107876412" contextRef="i_2022-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesAuthorized" scale="0" format="ixt:num-dot-decimal" decimals="INF">10,000,000</ix:nonFraction>
<ix:nonFraction id="c107876413" contextRef="i_2023-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesIssued" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c107876415" contextRef="i_2023-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c107876414" contextRef="i_2022-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesIssued" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c107876416" contextRef="i_2022-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c107876417" contextRef="i_2023-12-31" unitRef="USDPerShare" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.01</ix:nonFraction>
<ix:nonFraction id="c107876418" contextRef="i_2022-12-31" unitRef="USDPerShare" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.01</ix:nonFraction>
<ix:nonFraction id="c107876419" contextRef="i_2023-12-31" unitRef="Share" name="us-gaap:CommonStockSharesAuthorized" scale="0" format="ixt:num-dot-decimal" decimals="INF">15,000,000</ix:nonFraction>
<ix:nonFraction id="c107876420" contextRef="i_2022-12-31" unitRef="Share" name="us-gaap:CommonStockSharesAuthorized" scale="0" format="ixt:num-dot-decimal" decimals="INF">15,000,000</ix:nonFraction>
<ix:nonFraction id="c107876421" contextRef="i_2023-12-31" unitRef="Share" name="us-gaap:CommonStockSharesIssued" scale="0" format="ixt:num-dot-decimal" decimals="INF">9,985,580</ix:nonFraction>
<ix:nonFraction id="c107876423" contextRef="i_2023-12-31" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF">9,985,580</ix:nonFraction>
<ix:nonFraction id="c107876422" contextRef="i_2022-12-31" unitRef="Share" name="us-gaap:CommonStockSharesIssued" scale="0" format="ixt:num-dot-decimal" decimals="INF">9,927,360</ix:nonFraction>
<ix:nonFraction id="c107876424" contextRef="i_2022-12-31" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF">9,927,360</ix:nonFraction>
<ix:nonFraction id="c107876430" contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">102</ix:nonFraction>
<ix:nonFraction id="c107876436" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">41</ix:nonFraction>
<ix:nonFraction id="c107876442" contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">14</ix:nonFraction>
<ix:nonFraction id="c107876448" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">95</ix:nonFraction>
<ix:nonFraction id="c107876454" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">213</ix:nonFraction>
<ix:nonFraction id="c107876460" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">110</ix:nonFraction>
<ix:nonFraction id="c107876466" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">45</ix:nonFraction>
<ix:nonFraction id="c107876472" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">134</ix:nonFraction>
<ix:nonFraction id="c107876473" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:ProceedsFromIncomeTaxRefunds" scale="3" format="ixt:num-dot-decimal" decimals="-3">145</ix:nonFraction>
<ix:nonFraction id="c107876474" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:ProceedsFromIncomeTaxRefunds" scale="3" format="ixt:num-dot-decimal" decimals="-3">23</ix:nonFraction>
<ix:nonFraction id="c107876475" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:ProceedsFromIncomeTaxRefunds" scale="3" format="ixt:num-dot-decimal" decimals="-3">79</ix:nonFraction>
<ix:nonNumeric contextRef="i_2023-12-31_RangeAxis-MinimumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c107875832" format="ixt-sec:duryear">10</ix:nonNumeric>
<ix:nonFraction id="c107876484" contextRef="d_2022-01-01_2022-12-31" unitRef="Share" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c107876485" contextRef="d_2021-01-01_2021-12-31" unitRef="Share" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c107876486" contextRef="d_2022-01-01_2022-12-31" unitRef="Pure" name="nwpx:NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" scale="0" format="ixt:num-dot-decimal" decimals="INF">1</ix:nonFraction>
<ix:nonFraction id="c107876487" contextRef="d_2022-01-01_2022-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.8</ix:nonFraction>
<ix:nonFraction id="c107876488" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:Goodwill" scale="6" format="ixt:num-dot-decimal" decimals="-5">55.5</ix:nonFraction>
<ix:nonFraction id="c107876489" contextRef="i_2022-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember" unitRef="USD" name="us-gaap:ShortTermBorrowings" scale="6" format="ixt:num-dot-decimal" decimals="-5">10.8</ix:nonFraction>
<ix:nonFraction id="c107876518" contextRef="i_2021-12-31" unitRef="USD" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c107876182" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="Pure" name="nwpx:NumberOfNoncontributoryDefinedBenefitPlans" scale="0" format="ixt:num-dot-decimal" decimals="INF">2</ix:nonFraction>
<ix:nonFraction id="c107876519" contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="Pure" name="us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets" scale="-2" format="ixt:num-dot-decimal" decimals="2">7.00</ix:nonFraction>
<ix:nonFraction id="c107876233" contextRef="d_2023-01-01_2023-12-31" unitRef="Pure" name="nwpx:NumberOfInactiveStockIncentivePlans" scale="0" format="ixt:num-dot-decimal" decimals="INF">1</ix:nonFraction>
<ix:nonFraction id="c107876257" contextRef="i_2023-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="nwpx:PerformanceShareAwardTargetLevelPercentage" scale="-2" format="ixt:num-dot-decimal" decimals="0">100</ix:nonFraction>
<ix:nonFraction id="c107876534" contextRef="d_2022-01-01_2022-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="Pure" name="nwpx:NumberOfMajorCustomers" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c107876535" contextRef="d_2021-01-01_2021-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="Pure" name="nwpx:NumberOfMajorCustomers" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonNumeric contextRef="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2024-01-01" name="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" id="c107876356" format="ixt-sec:duryear">1</ix:nonNumeric>
<ix:nonNumeric contextRef="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2025-01-01" name="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" id="c107876358" format="ixt-sec:duryear">1</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:OpenTaxYear" id="c107876387">2019 2020 2021 2022 2023</ix:nonNumeric>
<ix:nonFraction id="c107876544" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="nwpx:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">482</ix:nonFraction>
<ix:nonFraction id="c107876545" contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="nwpx:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">592</ix:nonFraction>
<ix:nonFraction id="c107876546" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">12</ix:nonFraction>
<ix:nonFraction id="c107876547" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">33</ix:nonFraction>
<ix:nonFraction id="c107876548" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">79</ix:nonFraction>
<ix:nonFraction id="c107876549" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">213</ix:nonFraction>
<ix:footnote xml:lang="en-us" id="f96bcedcd-f4ed-4d01-a48d-e74a412797a4">Long-term finance lease liabilities, less current portion are included in Other long-term liabilities.</ix:footnote>
<ix:footnote xml:lang="en-us" id="fd21527d1-0888-4183-929f-7da4fb12316f">The number of PSAs disclosed in this table are at the target level of 100%.</ix:footnote>
<ix:footnote xml:lang="en-us" id="fe26a3098-5806-4058-8fc5-a2e5093f95df">Finance lease right-of-use assets are presented net of accumulated amortization of $1.4 million and $1.2 million as of December 31, 2023 and 2022, respectively.</ix:footnote>
<ix:footnote xml:lang="en-us" id="fe288bdd4-0be3-4622-9876-eaf309b29187">For the PSAs vested on March 31, 2023, the actual number of common shares that were issued was determined by multiplying the PSAs at the target level of 100%, as disclosed in this table, by a payout percentage based on the performance-based conditions achieved. The payout percentage was 159% for the 2020-2022 performance period, 126% for the 2021-2022 performance period, and 132% for the 2022 performance period.</ix:footnote>
<ix:footnote xml:lang="en-us" id="f89994dd2-1f3e-4b84-a160-134f75ddc089">Current portion of finance lease liabilities are included in Accrued liabilities.</ix:footnote>
<ix:footnote xml:lang="en-us" id="f67893c9f-9e9b-4ac4-9a64-1ebfdea502b5">There were no antidilutive shares for the years ended December 31, 2023, 2022, or 2021.</ix:footnote></ix:hidden>
<ix:references>
<link:schemaRef xlink:href="nwpx-20231231.xsd" xlink:type="simple"/></ix:references>
<ix:resources>
<xbrli:context id="d_2023-01-01_2023-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="USD"><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2023-06-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2023-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="Share"><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2024-02-23"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2024-02-23</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="NonApplicable"><xbrli:measure>thunderdome:item</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2023-10-01_2023-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2023-10-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="USDPerShare"><xbrli:divide><xbrli:unitNumerator><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unitNumerator><xbrli:unitDenominator><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unitDenominator></xbrli:divide></xbrli:unit>
<xbrli:context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="Pure"><xbrli:measure>xbrli:pure</xbrli:measure></xbrli:unit>
<xbrli:unit id="Year"><xbrli:measure>utr:Y</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandImprovementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandImprovementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:MachineryAndEquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:MachineryAndEquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilityMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:AccruedLiabilityMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_BalanceSheetLocationAxis-AccruedLiabilityMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:AccruedLiabilityMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:OtherLongtermLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:OtherLongtermLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-10-05</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-10-05</xbrli:startDate><xbrli:endDate>2021-10-05</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-10-05</xbrli:startDate><xbrli:endDate>2021-10-05</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-10-05</xbrli:startDate><xbrli:endDate>2021-10-05</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-10-05</xbrli:startDate><xbrli:endDate>2021-10-05</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-BacklogMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">nwpx:BacklogMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-10-05</xbrli:startDate><xbrli:endDate>2021-10-05</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:MachineryAndEquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:MachineryAndEquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentUnderFinanceLeaseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">nwpx:EquipmentUnderFinanceLeaseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentUnderFinanceLeaseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">nwpx:EquipmentUnderFinanceLeaseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-ConstructionInProgressMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ConstructionInProgressMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-ConstructionInProgressMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ConstructionInProgressMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_StatementGeographicalAxis-MX"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:MX</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_StatementGeographicalAxis-MX"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:MX</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OtherIntangibleAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-08-02_DebtInstrumentAxis-InterimFundingAgreementifaMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-08-02</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">nwpx:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-11-02_2023-11-02_DebtInstrumentAxis-InterimFundingAgreementifaMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">nwpx:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-11-02</xbrli:startDate><xbrli:endDate>2023-11-02</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-11-02_DebtInstrumentAxis-InterimFundingAgreementifaMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-11-02</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-10-22_LineOfCreditFacilityAxis-WellsFargoBankNAMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-10-22</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_LineOfCreditFacilityAxis-WellsFargoBankNAMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-10-22_2021-10-22_LineOfCreditFacilityAxis-WellsFargoBankNAMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-10-22</xbrli:startDate><xbrli:endDate>2021-10-22</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MinimumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">nwpx:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MaximumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">nwpx:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_BalanceSheetLocationAxis-PropertyAndEquipmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:PropertyAndEquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_BalanceSheetLocationAxis-PropertyAndEquipmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:PropertyAndEquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilitiesAndOtherLongtermLiabilitiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:AccruedLiabilitiesAndOtherLongtermLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_BalanceSheetLocationAxis-AccruedLiabilitiesAndOtherLongtermLiabilitiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:AccruedLiabilitiesAndOtherLongtermLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_BalanceSheetLocationAxis-OtherLiabilitiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:DesignatedAsHedgingInstrumentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="CAD"><xbrli:measure>iso4217:CAD</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:ForeignExchangeForward1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:DesignatedAsHedgingInstrumentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="EUR"><xbrli:measure>iso4217:EUR</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-NondesignatedMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:ForeignExchangeForward1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:DesignatedAsHedgingInstrumentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:ForeignExchangeForward1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:DesignatedAsHedgingInstrumentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:The1941InterestRateSwapMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:The1941InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentsGainLossByHedgingRelationshipAxis">us-gaap:CashFlowHedgingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:The1941InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentsGainLossByHedgingRelationshipAxis">us-gaap:CashFlowHedgingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-04-03_DerivativeInstrumentRiskAxis-The296InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:The296InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentsGainLossByHedgingRelationshipAxis">us-gaap:CashFlowHedgingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-04-03</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-The296InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:The296InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentsGainLossByHedgingRelationshipAxis">us-gaap:CashFlowHedgingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">nwpx:PropertyAndEquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">nwpx:PropertyAndEquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">nwpx:PropertyAndEquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:InterestExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:InterestExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:InterestExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_HedgingDesignationAxis-NondesignatedMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_HedgingDesignationAxis-NondesignatedMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_HedgingDesignationAxis-NondesignatedMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ReclassificationTypeAxis-ReclassifiedToNetSalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ReclassificationTypeAxis">nwpx:ReclassifiedToNetSalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ReclassificationTypeAxis-ReclassifiedToInterestExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ReclassificationTypeAxis">nwpx:ReclassifiedToInterestExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-09-22"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2022-09-22</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-09-02_SubsidiarySaleOfStockAxis-AtthemarketOfferingMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">nwpx:AtthemarketOfferingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-09-02</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-11-02"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2023-11-02</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-01"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2023-12-01</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ShareRepurchaseProgramAxis-ShareRepurchaseProgramMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">nwpx:ShareRepurchaseProgramMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-DefinedContributionPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">nwpx:DefinedContributionPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-10-06_2021-12-31_RetirementPlanTypeAxis-ParkusaDefinedContributionPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">nwpx:ParkusaDefinedContributionPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-10-06</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember_RetirementPlanTypeAxis-NonqualifiedRetirementSavingsPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:OtherLongtermLiabilitiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">nwpx:NonqualifiedRetirementSavingsPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember_RetirementPlanTypeAxis-NonqualifiedRetirementSavingsPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:OtherLongtermLiabilitiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">nwpx:NonqualifiedRetirementSavingsPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_IncomeStatementLocationAxis-CostOfSalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_IncomeStatementLocationAxis-CostOfSalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_IncomeStatementLocationAxis-CostOfSalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingGeneralAndAdministrativeExpensesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingGeneralAndAdministrativeExpensesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingGeneralAndAdministrativeExpensesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:RestrictedStockUnitsAndPerformanceStockAwardsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:RestrictedStockUnitsAndPerformanceStockAwardsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:RestrictedStockUnitsAndPerformanceStockAwardsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:RestrictedStockUnitsAndPerformanceStockAwardsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:RestrictedStockUnitsAndPerformanceStockAwardsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:StockAwardsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:DirectorMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:StockAwardsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:DirectorMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:StockAwardsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:DirectorMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-01-31_CounterpartyNameAxis-LowerWillametteGroupMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:CounterpartyNameAxis">nwpx:LowerWillametteGroupMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-01-01_2017-01-31_EnvironmentalRemediationSiteAxis-PortlandHarborSuperfundSiteMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:EnvironmentalRemediationSiteAxis">nwpx:PortlandHarborSuperfundSiteMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-01-01</xbrli:startDate><xbrli:endDate>2017-01-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-01-31_EnvironmentalRemediationSiteAxis-PortlandHarborSuperfundSiteMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:EnvironmentalRemediationSiteAxis">nwpx:PortlandHarborSuperfundSiteMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2014-06-30_LossContingenciesByNatureOfContingencyAxis-PortlandHarborNaturalreSourcesTrusteeCouncilMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LossContingenciesByNatureOfContingencyAxis">nwpx:PortlandHarborNaturalreSourcesTrusteeCouncilMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2014-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_OtherCommitmentsAxis-CapitalAdditionsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:OtherCommitmentsAxis">us-gaap:CapitalAdditionsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_StatementGeographicalAxis-CA"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CA</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_StatementGeographicalAxis-CA"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CA</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_StatementGeographicalAxis-CA"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CA</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">nwpx:OneSppCustomerMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">nwpx:OneSppCustomerMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">nwpx:OneSppCustomerMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredOverTimeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredOverTimeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredOverTimeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2024-01-01"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:typedMember dimension="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis"><us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>2024-01-01</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain></xbrldi:typedMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2025-01-01"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:typedMember dimension="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis"><us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>2025-01-01</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain></xbrldi:typedMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_BalanceSheetLocationAxis-OtherAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_BalanceSheetLocationAxis-OtherAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-DomesticCountryMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-DomesticCountryMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:EngineeredSteelPressurePipeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:EngineeredSteelPressurePipeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:EngineeredSteelPressurePipeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:CorporateNonSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:CorporateNonSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:CorporateNonSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:EngineeredSteelPressurePipeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:EngineeredSteelPressurePipeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:CorporateNonSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:CorporateNonSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-01-01</xbrli:startDate><xbrli:endDate>2023-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-01-01</xbrli:startDate><xbrli:endDate>2022-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001001385</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<ix:relationship linkRole="http://www.xbrl.org/2003/role/link" arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" toRefs="f96bcedcd-f4ed-4d01-a48d-e74a412797a4" fromRefs="c107875222"></ix:relationship>
<ix:relationship linkRole="http://www.xbrl.org/2003/role/link" arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" toRefs="fd21527d1-0888-4183-929f-7da4fb12316f" fromRefs="c107875347 c107875349 c107875351 c107875353 c107875355"></ix:relationship>
<ix:relationship linkRole="http://www.xbrl.org/2003/role/link" arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" toRefs="fe26a3098-5806-4058-8fc5-a2e5093f95df" fromRefs="c107875161 c107875162"></ix:relationship>
<ix:relationship linkRole="http://www.xbrl.org/2003/role/link" arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" toRefs="fe288bdd4-0be3-4622-9876-eaf309b29187" fromRefs="c107875353 c107875354"></ix:relationship>
<ix:relationship linkRole="http://www.xbrl.org/2003/role/link" arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" toRefs="f89994dd2-1f3e-4b84-a160-134f75ddc089" fromRefs="c107875220"></ix:relationship>
<ix:relationship linkRole="http://www.xbrl.org/2003/role/link" arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" toRefs="f67893c9f-9e9b-4ac4-9a64-1ebfdea502b5" fromRefs="c107875033 c107875034 c107875035"></ix:relationship></ix:resources>
</ix:header></div>
  <div>
   &#160;
  </div>
  <div><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><a href="#toc" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt">Table of Contents</a></p>
<hr style="height: 3px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/>
<hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 0 0 3pt 0"/>
<p style="margin: 0pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>UNITED STATES</b></p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>SECURITIES AND EXCHANGE COMMISSION</b></p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Washington, D.C. 20549</b></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>FORM</b>&#160;<b><ix:nonNumeric name="dei:DocumentType" contextRef="d_2023-01-01_2023-12-31" id="ixv-16949">10-K</ix:nonNumeric></b></p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(Mark One)</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"><ix:nonNumeric name="dei:DocumentAnnualReport" format="ixt-sec:boolballotbox" contextRef="d_2023-01-01_2023-12-31" id="ixv-16950">&#9746;</ix:nonNumeric></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>ANNUAL REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</b></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">For the fiscal year ended: <b><ix:nonNumeric name="dei:DocumentPeriodEndDate" format="ixt:date-monthname-day-year-en" contextRef="d_2023-01-01_2023-12-31" id="ixv-16951">December 31, 2023</ix:nonNumeric></b></p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">or</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"><ix:nonNumeric name="dei:DocumentTransitionReport" format="ixt-sec:boolballotbox" contextRef="d_2023-01-01_2023-12-31" id="ixv-16952">&#9744;</ix:nonNumeric></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>TRANSITION REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</b></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">For the transition period from &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; to</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">Commission file number: <b></b><ix:nonNumeric name="dei:EntityFileNumber" contextRef="d_2023-01-01_2023-12-31" id="ixv-52"><b>0</b>-<b>27140</b></ix:nonNumeric><b></b></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>NORTHWEST PIPE COMPANY</b></p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">(Exact name of registrant as specified in its charter)</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"><tbody><tr><td style="vertical-align:top;width:10.6%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><ix:nonNumeric name="dei:EntityIncorporationStateCountryCode" format="ixt-sec:stateprovnameen" contextRef="d_2023-01-01_2023-12-31" id="ixv-16953">Oregon</ix:nonNumeric></b></p> </td><td style="vertical-align:top;width:10.6%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><ix:nonNumeric name="dei:EntityTaxIdentificationNumber" contextRef="d_2023-01-01_2023-12-31" id="ixv-16954">93-0557988</ix:nonNumeric></b></p> </td></tr>
<tr><td style="vertical-align:top;width:10.6%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">State or other jurisdiction of incorporation or organization</p> </td><td style="vertical-align:top;width:10.6%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">(I.R.S. Employer Identification No.)</p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b></b><ix:nonNumeric name="dei:EntityAddressAddressLine1" contextRef="d_2023-01-01_2023-12-31" id="ixv-78"><b>201 NE Park Plaza Drive, Suite</b>&#160;<b>100</b></ix:nonNumeric><b></b></p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><ix:nonNumeric name="dei:EntityAddressCityOrTown" contextRef="d_2023-01-01_2023-12-31" id="ixv-16955">Vancouver</ix:nonNumeric>, <ix:nonNumeric name="dei:EntityAddressStateOrProvince" format="ixt-sec:stateprovnameen" contextRef="d_2023-01-01_2023-12-31" id="ixv-16956">Washington</ix:nonNumeric> <ix:nonNumeric name="dei:EntityAddressPostalZipCode" contextRef="d_2023-01-01_2023-12-31" id="ixv-16957">98684</ix:nonNumeric></b></p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">(Address of principal executive offices and Zip Code)</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">Registrant&#8217;s telephone number, including area code: <b><ix:nonNumeric name="dei:CityAreaCode" contextRef="d_2023-01-01_2023-12-31" id="ixv-16958">360</ix:nonNumeric></b>&#8209;<b></b><ix:nonNumeric name="dei:LocalPhoneNumber" contextRef="d_2023-01-01_2023-12-31" id="ixv-89"><b>397</b>&#8209;<b>6250</b></ix:nonNumeric><b></b></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">Securities registered pursuant to Section&#160;12(b) of the Act:</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"><tbody><tr><td style="border-bottom:solid 1px #000000;vertical-align:bottom;width:7.4%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">Title of each class</p> </td><td style="vertical-align:top;width:0.4%;">&#160;</td><td style="border-bottom:solid 1px #000000;vertical-align:bottom;width:5.5%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">Trading Symbol(s)</p> </td><td style="vertical-align:top;width:0.4%;">&#160;</td><td style="border-bottom:solid 1px #000000;vertical-align:bottom;width:7.4%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">Name of each exchange on which registered</p> </td></tr>
<tr><td style="vertical-align:top;width:7.4%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><ix:nonNumeric name="dei:Security12bTitle" contextRef="d_2023-01-01_2023-12-31" id="ixv-16959">Common Stock, par value $0.01 per share</ix:nonNumeric></b></p> </td><td style="vertical-align:top;width:0.4%;">&#160;</td><td style="vertical-align:top;width:5.5%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><ix:nonNumeric name="dei:TradingSymbol" contextRef="d_2023-01-01_2023-12-31" id="ixv-16960">NWPX</ix:nonNumeric></b></p> </td><td style="vertical-align:top;width:0.4%;">&#160;</td><td style="vertical-align:top;width:7.4%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><ix:nonNumeric name="dei:SecurityExchangeName" format="ixt-sec:exchnameen" contextRef="d_2023-01-01_2023-12-31" id="ixv-16961">Nasdaq</ix:nonNumeric> Global Select Market</b></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">Securities registered pursuant to section&#160;12(g) of the Act: <b>None</b></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Indicate by check mark if the registrant is a well-known seasoned issuer, as defined in Rule&#160;405 of the Securities Act.&#160;&#160;&#160;&#160;Yes&#160;&#160;&#9744;&#160;&#160;&#160;&#160;<ix:nonNumeric name="dei:EntityWellKnownSeasonedIssuer" contextRef="d_2023-01-01_2023-12-31" id="ixv-16962">No</ix:nonNumeric>&#160;&#160;&#9746;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Indicate by check mark if the registrant is not required to file reports pursuant to Section&#160;13 or Section&#160;15(d) of the Act.&#160;&#160;&#160;&#160;Yes&#160;&#160;&#9744;&#160;&#160;&#160;&#160;<ix:nonNumeric name="dei:EntityVoluntaryFilers" contextRef="d_2023-01-01_2023-12-31" id="ixv-16963">No</ix:nonNumeric>&#160;&#160;&#9746;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Indicate by check mark whether the registrant (1)&#160;has filed all reports required to be filed by Section&#160;13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12&#160;months (or for such shorter period that the registrant was required to file such reports), and (2)&#160;has been subject to such filing requirements for the past 90 days.&#160;&#160;&#160;&#160;<ix:nonNumeric name="dei:EntityCurrentReportingStatus" contextRef="d_2023-01-01_2023-12-31" id="ixv-16964">Yes</ix:nonNumeric>&#160;&#160;&#9746;&#160;&#160;&#160;&#160;No&#160;&#160;&#9744;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Indicate by check mark whether the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule&#160;405 of Regulation&#160;S&#8209;T (&#167;232.405 of this chapter) during the preceding 12&#160;months (or for such shorter period that the registrant was required to submit such files).&#160;&#160;&#160;&#160;<ix:nonNumeric name="dei:EntityInteractiveDataCurrent" contextRef="d_2023-01-01_2023-12-31" id="ixv-16965">Yes</ix:nonNumeric>&#160;&#160;&#9746;&#160;&#160;&#160;&#160;No&#160;&#160;&#9744;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGNUM" style="text-align: center; width: 100%">
  &#160;
 </div>
 <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
 <div class="PGHDR" style="text-align: left; width: 100%">
  <div class="hf-row">
   <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
    <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
   </div>
  </div>
 </div>
</div>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Indicate by check mark whether the registrant is a large accelerated filer, an accelerated filer, a non-accelerated filer, a smaller reporting company, or an emerging growth company. See the definitions of &#8220;large accelerated filer,&#8221; &#8220;accelerated filer,&#8221; &#8220;smaller reporting company,&#8221; and &#8220;emerging growth company&#8221; in Rule&#160;12b&#8209;2 of the Exchange Act.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"><tbody><tr><td style="vertical-align:bottom;width:1.9%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Large&#160;accelerated&#160;filer</p> </td><td style="vertical-align:bottom;width:3.4%;"> <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#9744;</p> </td><td style="vertical-align:bottom;width:3.9%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><ix:nonNumeric name="dei:EntityFilerCategory" format="ixt-sec:entityfilercategoryen" contextRef="d_2023-01-01_2023-12-31" id="ixv-16966">Accelerated&#160;filer</ix:nonNumeric></p> </td><td style="vertical-align:bottom;width:0.5%;"> <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#9746;</p> </td></tr>
<tr><td style="vertical-align:bottom;width:1.9%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Non-accelerated&#160;filer</p> </td><td style="vertical-align:bottom;width:3.4%;"> <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#9744;</p> </td><td style="vertical-align:bottom;width:3.9%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Smaller&#160;reporting&#160;company</p> </td><td style="vertical-align:bottom;width:0.5%;"> <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><ix:nonNumeric name="dei:EntitySmallBusiness" format="ixt-sec:boolballotbox" contextRef="d_2023-01-01_2023-12-31" id="ixv-16967">&#9744;</ix:nonNumeric></p> </td></tr>
<tr><td style="vertical-align:bottom;width:1.9%;">&#160;</td><td style="vertical-align:bottom;width:3.4%;">&#160;</td><td style="vertical-align:bottom;width:3.9%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Emerging&#160;growth&#160;company</p> </td><td style="vertical-align:bottom;width:0.5%;"> <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><ix:nonNumeric name="dei:EntityEmergingGrowthCompany" format="ixt-sec:boolballotbox" contextRef="d_2023-01-01_2023-12-31" id="ixv-16968">&#9744;</ix:nonNumeric></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">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&#160;13(a) of the Exchange Act.&#160;&#160;&#160;&#160;&#9744;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Indicate by check mark whether the registrant has filed a report on and attestation to its management&#8217;s assessment of the effectiveness of its internal control over financial reporting under Section&#160;404(b) of the Sarbanes-Oxley Act (15&#160;U.S.C.&#160;7262(b)) by the registered public accounting firm that prepared or issued its audit report. &#160;&#160;&#160;&#160;<ix:nonNumeric name="dei:IcfrAuditorAttestationFlag" format="ixt-sec:boolballotbox" contextRef="d_2023-01-01_2023-12-31" id="ixv-16969">&#9746;</ix:nonNumeric></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">If securities are registered pursuant to Section&#160;12(b) of the Act, indicate by check mark whether the financial statements of the registrant included in the filing reflect the correction of an error to previously issued financial statements.&#160; <ix:nonNumeric name="dei:DocumentFinStmtErrorCorrectionFlag" format="ixt-sec:boolballotbox" contextRef="d_2023-01-01_2023-12-31" id="ixv-16970">&#9744;</ix:nonNumeric>&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Indicate by check mark whether any of those error corrections are restatements that required a recovery analysis of incentive-based compensation received by any of the registrant&#8217;s executive officers during the relevant recovery period pursuant to &#167;240.10D&#8209;1(b).&#160; &#9744;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Indicate by check mark whether the registrant is a shell company (as defined in Rule&#160;12b&#8209;2 of the Act).&#160;&#160;&#160;&#160;Yes&#160;&#160;<ix:nonNumeric name="dei:EntityShellCompany" format="ixt-sec:boolballotbox" contextRef="d_2023-01-01_2023-12-31" id="ixv-16971">&#9744;</ix:nonNumeric>&#160;&#160;&#160;&#160;No&#160;&#160;&#9746;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The aggregate market value of the common equity that was held by non-affiliates of the registrant was $<ix:nonFraction name="dei:EntityPublicFloat" scale="0" unitRef="USD" decimals="INF" format="ixt:num-dot-decimal" contextRef="i_2023-06-30" id="ixv-16972">262,653,481</ix:nonFraction> as of June&#160;30, 2023 based upon the last sales price as reported by the Nasdaq Global Select Market.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The number of shares outstanding of the registrant&#8217;s common stock as of February 23, 2024 was <ix:nonFraction name="dei:EntityCommonStockSharesOutstanding" scale="0" unitRef="Share" decimals="INF" format="ixt:num-dot-decimal" contextRef="i_2024-02-23" id="ixv-16973">9,892,244</ix:nonFraction>&#160;shares.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">DOCUMENTS INCORPORATED BY REFERENCE</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The registrant has incorporated into Parts&#160;II and III of Form&#160;10&#8209;K by reference certain portions of its 2022 Form&#160;10&#8209;K, which was filed with the Securities and Exchange Commission (&#8220;SEC&#8221;) on March&#160;16, 2023, and its Proxy Statement for its 2024 Annual Meeting of Shareholders.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/>
<hr style="height: 3px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 0 0 3pt 0"/>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGFTR" style="text-align: center; width: 100%">
  <div class="hf-row">
   <div class="hf-cell PGNUM">
    &#160;
   </div>
  </div>
 </div>
 <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
 <div class="PGHDR" style="text-align: left; width: 100%">
  <div class="hf-row">
   <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
    <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
   </div>
  </div>
 </div>
</div>
<p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p></div>
  <div>
   &#160;
  </div>
  <div>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="toc" title="toc" href="#"></a>NORTHWEST PIPE COMPANY</b></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>2023 ANNUAL REPORT ON FORM</b>&#160;<b>10</b>&#8209;<b>K</b></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>TABLE OF CONTENTS</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 100%; margin-left: 0pt; margin-right: 0pt;">
    <tbody>
     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td colspan="2" style="vertical-align: bottom; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Page</b></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td colspan="2" style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#cautionary" style="-sec-extract:exhibit;">Cautionary Statement Regarding Forward-Looking Statements</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#cautionary">1</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td colspan="2" style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td colspan="3" style="vertical-align: top; width: 94%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><a href="#part1" style="-sec-extract:exhibit;"><b>Part</b>&#160;<b>I</b></a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;1</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item1" style="-sec-extract:exhibit;">Business</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item1">2</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;1A</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item1a" style="-sec-extract:exhibit;">Risk Factors</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item1a">10</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;1B</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item1b" style="-sec-extract:exhibit;">Unresolved Staff Comments</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item1b">20</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;1C</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item1c" style="-sec-extract:exhibit;">Cybersecurity</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item1c">20</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;2</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item2" style="-sec-extract:exhibit;">Properties</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item2">21</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;3</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item3" style="-sec-extract:exhibit;">Legal Proceedings</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item3">22</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;4</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item4" style="-sec-extract:exhibit;">Mine Safety Disclosures</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item4">22</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td colspan="3" style="vertical-align: top; width: 94%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><a href="#part2" style="-sec-extract:exhibit;"><b>Part</b>&#160;<b>II</b></a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;5</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><a href="#item5" style="-sec-extract:exhibit;">Market for Registrant&#8217;s Common Equity, Related Stockholder Matters and Issuer Purchases of Equity Securities</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item5">22</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;6</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item6" style="-sec-extract:exhibit;">[Reserved]</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item6">24</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;7</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item7" style="-sec-extract:exhibit;">Management&#8217;s Discussion and Analysis of Financial Condition and Results of Operations</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item7">25</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;7A</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item7a" style="-sec-extract:exhibit;">Quantitative and Qualitative Disclosures About Market Risk</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item7a">31</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;8</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item8" style="-sec-extract:exhibit;">Financial Statements and Supplementary Data</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item8">32</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;9</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item9" style="-sec-extract:exhibit;">Changes in and Disagreements With Accountants on Accounting and Financial Disclosure</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item9">32</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;9A</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item9a" style="-sec-extract:exhibit;">Controls and Procedures</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item9a">32</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;9B</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item9b" style="-sec-extract:exhibit;">Other Information</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item9b">33</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;9C</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item9c" style="-sec-extract:exhibit;">Disclosure Regarding Foreign Jurisdictions that Prevent Inspections</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item9c">33</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td colspan="3" style="vertical-align: top; width: 94%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><a href="#part3" style="-sec-extract:exhibit;"><b>Part</b>&#160;<b>III</b></a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;10</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item10" style="-sec-extract:exhibit;">Directors, Executive Officers and Corporate Governance</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item10">34</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;11</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item11" style="-sec-extract:exhibit;">Executive Compensation</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item11">35</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;12</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><a href="#item12" style="-sec-extract:exhibit;">Security Ownership of Certain Beneficial Owners and Management and Related Stockholder Matters</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item12">35</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;13</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item13" style="-sec-extract:exhibit;">Certain Relationships and Related Transactions, and Director Independence</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item13">36</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;14</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item14" style="-sec-extract:exhibit;">Principal Accountant Fees and Services</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item14">36</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td colspan="3" style="vertical-align: top; width: 94%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><a href="#part4" style="-sec-extract:exhibit;"><b>Part</b>&#160;<b>IV</b></a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="vertical-align: middle; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;15</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item15" style="-sec-extract:exhibit;">Exhibit and Financial Statement Schedules</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item15">36</a></p> </td>
     </tr>

     <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      <td style="vertical-align: top; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Item&#160;16</p> </td>
      <td style="vertical-align: bottom; width: 82%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><a href="#item16" style="-sec-extract:exhibit;">Form&#160;10&#8209;K Summary</a></p> </td>
      <td style="vertical-align: bottom; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;"><a class="tocPGNUM" href="#item16">39</a></p> </td>
     </tr>

    </tbody>
   </table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM">
       &#160;
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  </div>
  <div>
   &#160;
  </div>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="cautionary" title="cautionary" href="#"></a>CAUTIONARY STATEMENT REGARDING FORWARD-LOOKING STATEMENTS</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Certain statements in this Annual Report on Form&#160;10&#8209;K for the year ended December&#160;31, 2023 (&#8220;2023 Form&#160;10&#8209;K&#8221;), other than purely historical information, are &#8220;forward-looking statements&#8221; within the meaning of the Private Securities Litigation Reform Act of 1995 and Section&#160;21E of the Securities Exchange Act of 1934, as amended (&#8220;Exchange Act&#8221;), that are based on current expectations, estimates, and projections about our business, management&#8217;s beliefs, and assumptions made by management. Words such as &#8220;expects,&#8221; &#8220;anticipates,&#8221; &#8220;intends,&#8221; &#8220;plans,&#8221; &#8220;believes,&#8221; &#8220;seeks,&#8221; &#8220;estimates,&#8221; &#8220;forecasts,&#8221; &#8220;should,&#8221; &#8220;could,&#8221; and variations of such words and similar expressions are intended to identify such forward-looking statements. These statements are not guarantees of future performance and involve risks and uncertainties that are difficult to predict. Therefore, actual outcomes and results may differ materially from what is expressed or forecasted in such forward-looking statements as a result of a variety of important factors. While it is impossible to identify all such factors, those that could cause actual results to differ materially from those estimated by us include:</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">changes in demand and market prices for our products;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">product mix;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">bidding activity and order modifications or cancelations;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">timing of customer orders and deliveries;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">production schedules;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">price and availability of raw materials;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">excess or shortage of production capacity;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">international trade policy and regulations;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">changes in tariffs and duties imposed on imports and exports and related impacts on us;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">economic uncertainty and associated trends in macroeconomic conditions, including potential recession, inflation, and the state of the housing market;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">interest rate risk and changes in market interest rates, including the impact on our customers and related demand for our products;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">our ability to identify and complete internal initiatives and/or acquisitions in order to grow our business;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">our ability to effectively integrate Park Environmental Equipment,&#160;LLC (&#8220;ParkUSA&#8221;) and other acquisitions into our business and operations and achieve significant administrative and operational cost synergies and accretion to financial results;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">effects of security breaches, computer viruses, and cybersecurity incidents;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">timing and amount of share repurchases;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">impacts of U.S. tax reform legislation on our results of operations;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">adequacy of our insurance coverage;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">supply chain challenges;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">labor shortages;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">ongoing military conflicts in areas such as Ukraine and Israel, and related consequences;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">operating problems at our manufacturing operations including fires, explosions, inclement weather, and floods and other natural disasters;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">material weaknesses in our internal control over financial reporting and our ability to remediate such weaknesses;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">impacts of pandemics, epidemics, or other public health emergencies; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">other risks discussed in Part&#160;I&#160;&#8212; Item&#160;1A. &#8220;Risk Factors&#8221; of this 2023 Form&#160;10&#8209;K and from time to time in our other SEC filings and reports.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">Such forward-looking statements speak only as of the date on which they are made, and we do not undertake any obligation to update any forward-looking statement to reflect events or circumstances after the date of this 2023 Form&#160;10&#8209;K. If we do update or correct one or more forward-looking statements, investors and others should not conclude that we will make additional updates or corrections with respect thereto or with respect to other forward-looking statements.</p>
  <div>
   &#160;
  </div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    1
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
   &#160;
  </div>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="part1" title="part1" href="#"></a>PART</b>&#160;<b>I</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item1" title="item1" href="#"></a>Item</b>&#160;<b>1.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Business</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Unless otherwise indicated, the terms &#8220;the Company,&#8221; &#8220;we,&#8221; &#8220;our,&#8221; and &#8220;us&#8221; are used in this 2023 Form&#160;10&#8209;K to refer to Northwest Pipe Company or one of our consolidated subsidiaries or to all of them taken as a whole. We were incorporated in the State of Oregon in 1966.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Overview</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Northwest Pipe Company is a leading manufacturer of water-related infrastructure products. In addition to being the largest manufacturer of engineered steel water pipeline systems in North America, we manufacture stormwater and wastewater technology products; high-quality precast and reinforced concrete products; pump lift stations; steel casing pipe, bar-wrapped concrete cylinder pipe, and one of the largest offerings of pipeline system joints, fittings, and specialized components. Strategically positioned to meet growing water and wastewater infrastructure needs, we provide solution-based products for a wide range of markets under the ParkUSA, Geneva Pipe and Precast, Permalok&#174;, and Northwest Pipe Company lines. Our diverse team is committed to safety, quality, and innovation while demonstrating our core values of accountability, commitment, and teamwork. We are headquartered in Vancouver, Washington, and have 13&#160;manufacturing facilities across North America.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our water infrastructure products are sold generally to installation contractors, who include our products in their bids to federal, state, and municipal agencies, privately-owned water companies, or developers for specific projects. We believe our sales are substantially driven by spending on urban growth and new water infrastructure with a recent trend towards spending on water infrastructure replacement, repair, and upgrade. Within the total range of products, our steel pipe best addresses the larger-diameter, higher-pressure pipeline applications, while our precast concrete products mainly serve stormwater and sanitary sewer systems.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">With steady population growth and regional community expansion, as well as continued drought conditions, existing water sources have become stressed, and we see continued opportunities for growth in North American infrastructure.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Strategic Actions in the Precast and Reinforced Concrete Products Market</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On October&#160;5, 2021, we completed the acquisition of 100% of Park Environmental Equipment,&#160;LLC (ParkUSA) for a purchase price of $90.2&#160;million in cash, which is included in the Precast Infrastructure and Engineered Systems (&#8220;Precast&#8221;) segment for all periods following the acquisition date. ParkUSA is a precast concrete and steel fabrication-based company that develops and manufactures water, wastewater, and environmental solutions. Operations continue with ParkUSA&#8217;s previous management and workforce at its three Texas manufacturing facilities located in Houston, Dallas, and San Antonio. This strategic acquisition provides a foothold into the water infrastructure technology market. As we employ similar operating capabilities at our existing facilities, we intend to explore strategic opportunities to expand ParkUSA&#8217;s value-added products within the organization.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On January&#160;31, 2020, we completed the acquisition of 100% of Geneva Pipe and Precast Company (&#8220;Geneva&#8221;) (fka Geneva Pipe Company, Inc.) for a purchase price of $49.4&#160;million in cash, which is included in the Precast segment for all periods following the acquisition date. Geneva is a concrete pipe and precast concrete products manufacturer based in Utah. This acquisition expanded our water infrastructure product capabilities by adding additional reinforced concrete pipe capacity and a full line of precast concrete products including storm drains and manholes, catch basins, vaults, and curb inlets as well as innovative lined products that extend the life of concrete pipe and manholes for sewer applications. Operations continue with Geneva&#8217;s previous management and workforce at its three Utah manufacturing facilities.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Our Segments</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Engineered Steel Pressure Pipe (</i></b>&#8220;<b><i>SPP</i></b>&#8221;<b><i>)</i></b>. SPP manufactures large-diameter, high-pressure steel pipeline systems for use in water infrastructure applications, which are primarily related to drinking water systems. These products are also used for hydroelectric power systems, wastewater systems, seismic resiliency, and other applications. In addition, SPP makes products for industrial plant piping systems and certain structural applications. SPP has manufacturing facilities located in Portland, Oregon; Adelanto and Tracy, California; Parkersburg, West Virginia; Saginaw, Texas; St.&#160;Louis, Missouri; and San Luis R&#237;o Colorado, Mexico.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Precast Infrastructure and Engineered Systems (Precast)</i></b>. Precast manufactures stormwater and wastewater technology products, high-quality precast and reinforced concrete products, including reinforced concrete pipe (&#8220;RCP&#8221;), manholes, box culverts, vaults, and catch basins, pump lift stations, oil water separators, biofiltration units, and other environmental and engineered solutions. Precast has manufacturing facilities located in Dallas, Houston, and San Antonio, Texas; and Orem, Salt Lake City, and St.&#160;George, Utah.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      2
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Our Industries</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Much of the United States water infrastructure is antiquated and many authorities, including the United States Environmental Protection Agency (&#8220;EPA&#8221;), believe the United States water infrastructure is in critical need of update, repair, or replacement. A combination of new population centers, rising demand on developed water sources, substantial underinvestment in water infrastructure over the past several decades, drought conditions, climate change, and increasingly stringent regulatory policies are driving demand for water infrastructure projects in the United States. These trends are intensifying the need for new water infrastructure as well as the need to upgrade, repair, and replace existing water infrastructure. While we believe this offers the potential for increased demand for our water infrastructure products and other products related to water transmission, budgetary pressures could impact governmental and public water agency projects in the near-term.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Federal initiatives to improve the conditions of the aging water infrastructure include the Water Infrastructure and Resiliency Finance Center at the EPA and the Water and Environmental Programs at the U.S. Department of Agriculture. The Bipartisan Infrastructure Deal (Infrastructure Investment and Jobs Act), signed into law in November 2021, will invest $55&#160;billion to expand access to clean drinking water for households, businesses, schools, and child care centers all across the country. According to its latest report, the <i>2022</i>&#160;<i>Annual Report</i>, the EPA&#8217;s Water Infrastructure Finance and Innovation Act program, a federal credit program for eligible water and wastewater infrastructure projects, closed 24&#160;loans totaling $4&#160;billion in 2022, and 96&#160;loans totaling over $17&#160;billion over the life of the program, as of December&#160;31, 2022.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In addition to the Federal initiatives, individual states are also taking action. In November 2013, the State of Texas earmarked $27&#160;billion of future bond funding for state water projects over the next 50&#160;years through their State Water Implementation Fund for Texas (SWIFT). This program provides low-interest and deferred loans to state agencies making approved investments in water infrastructure projects. In November 2014, the State of California approved the Water Quality, Supply and Infrastructure Improvement Act which authorizes $7.5&#160;billion in general obligation bonds to fund state water supply infrastructure projects, such as public water system improvements, surface and groundwater storage, drinking water protection, water recycling and advanced water treatment technology, water supply management and conveyance, wastewater treatment, drought relief, emergency water supplies, and ecosystem and watershed protection and restoration. Our strategically located manufacturing facilities are well-positioned to take advantage of the anticipated growth in demand.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Engineered Steel Pressure Pipe. </i></b>In its <i>Seventh Drinking Water Infrastructure Needs Survey and Assessment</i> released in September 2023, the EPA estimated the nation will need to spend $625&#160;billion on public water system infrastructure capital improvements from 2021 to 2040 to continue to provide safe drinking water to the public. The American Society of Civil Engineers (&#8220;ASCE&#8221;) has given poor ratings to many aspects of the United States water infrastructure in their latest report, the <i>2021 Infrastructure Report Card for Drinking Water</i>. The <i>Failure to Act: Economic Impacts of Status Quo Investment Across Infrastructure Systems</i> report published by ASCE and EBP in 2021, estimates there will be $2.6&#160;trillion in cumulative infrastructure needs for water and wastewater infrastructure by 2029, and $5.8&#160;trillion in cumulative infrastructure needs by 2039.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">According to the United States Census Bureau, the population of the United States will increase by approximately 49&#160;million people between 2024 and 2050. The resulting increase in demand will require substantial new infrastructure, as the existing United States water infrastructure is not equipped to provide water to millions of new residents. The development of new sources of water at greater distances from population centers will drive the demand for new water transmission lines. Climate change may be a cause for the drought conditions in some regions of the country and are increasing the demand for new infrastructure. The <i>Construction Outlook 2024</i> from Dodge Construction Network forecasts public works construction, which continues to benefit from several federal legislative initiatives passed to help improve the nation&#8217;s aging infrastructure, will grow 17% in 2024.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As water systems degrade over time and cause failures, many current water supply sources are in danger of being exhausted. Much of the drinking water infrastructure in major cities was built in the mid-20th century with a lifespan of 75 to 100 years. In its <i>2021 Infrastructure Report Card for Drinking Water</i>, the ASCE estimates there are 250,000 to 300,000 water main breaks per year in the United States, wasting over 2.1&#160;trillion gallons of treated drinking water. The ASCE also reports that with utilities averaging a pipe replacement rate of 1.0% to 4.8% per year, the replacement rate now matches the lifecycle of the pipes. These aging water and wastewater systems will drive demand for future investment.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Drinking Water State Revolving Loan Fund (&#8220;DWSRF&#8221;), a federal-state partnership and financial assistance program to help water systems and states achieve the health protection objectives of the Safe Drinking Water Act, provided $4.4&#160;billion in assistance in fiscal 2022 and $53.0&#160;billion in assistance since 1997, according to the <i>2022 DWSRF Annual Report</i>.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      3
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Finally, the increased public awareness of problems with the quality of drinking water and efficient water usage has resulted in more stringent application of federal and state environmental regulations. The need to comply with these regulations in an environment of heightened public awareness is expected to contribute to demand in the water infrastructure industry.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our large-diameter, engineered welded steel pipeline systems are utilized in water, energy, structural, and plant piping applications. Our core market is the large-diameter, high-pressure portion of a water transmission pipeline that is typically at the &#8220;upper end&#8221; of a pipeline system. This is the portion of the overall water pipeline that generally transports water from the source to a treatment plant or from a treatment plant into the distribution system, rather than the small lines that deliver water directly into households. We believe the total addressable market for the engineered welded steel pipeline system products sold will be approximately $1.8&#160;billion over the next three years.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Precast Infrastructure and Engineered Systems.</i></b> In its <i>2021 Infrastructure Report Card for Wastewater</i>, the ASCE estimates the drinking water and wastewater pipes in the ground, with a typical lifespan expected of 50 to 100&#160;years, are on average 45&#160;years old. In 2020, Bluefield Research estimated that utilities throughout the country will spend more than $3&#160;billion on wastewater pipe repairs and replacements, addressing 4,692&#160;miles of wastewater pipeline, and this cost is projected to grow by an average of 5% annually.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In its <i>2021 Infrastructure Report Card for Stormwater</i>, the ASCE states that given the recent increase in rainfall trends and urbanization in certain geographic regions, the actual capacity of a stormwater system is often less than the design standard. In addition, from 2010 to 2018 the length of impaired rivers and streams increased 39%, a key indicator of declining stormwater infrastructure condition.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our high-quality precast and reinforced concrete products and bar-wrapped concrete cylinder pipe are typically used in non-pressure, gravity fed sewer and stormwater applications. Demand for these products is generally influenced by general economic conditions such as housing starts, population growth, and interest rates. New residential and commercial construction and state Department of Transportation funding impact our market. The November 2022 Bluefield Research <i>Insight Report&#160;</i>&#8211;<i> U.S. &amp; Canada Municipal Water Outlook: Utility CAPEX &amp; OPEX Forecasts, 2022-2030</i> (&#8220;Bluefield Report&#8221;) states that since the peak of new U.S. home construction in March 2022, interest rate hikes have dissuaded potential new homebuyers from entering the market. According to the United States Census Bureau, the privately-owned housing starts were at a seasonally adjusted annual rate of 1.5&#160;million in December 2023 compared to 1.4&#160;million in December 2022. However, our Precast manufacturing facilities are located in Texas, one of three states with the largest infrastructure asset base, and Utah; both of these states are in the top five of the fastest growing markets (based on compound annual growth rate forecasted through 2030), according to the Bluefield Report.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Backlog</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Engineered Steel Pressure Pipe. </i></b>We measure backlog as a key metric to evaluate the commercial health of our water infrastructure steel pipe business. Backlog represents the balance of remaining performance obligations under signed contracts for SPP products for which revenue is recognized over time. Binding agreements received by us may be subject to cancelation or postponement; however, cancelation would obligate the customer to pay the contract consideration proportional to the costs we have incurred through the cancelation date. As of December&#160;31, 2023 and 2022, backlog was $273&#160;million and $274&#160;million, respectively. Backlog as of any particular date may not be indicative of actual operating results for any fiscal period. There can be no assurance that any amount of backlog ultimately will be realized. Separate from our backlog, we have been notified that we are the successful bidder on additional projects, but binding agreements have not been executed (&#8220;confirmed orders&#8221;). As of December&#160;31, 2023 and 2022, backlog including confirmed orders was $319&#160;million and $372&#160;million, respectively. Projects for which a binding agreement has not been executed could be canceled.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Products</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Engineered Steel Pressure Pipe. </i></b>Water infrastructure steel pipe is used for high-pressure applications, typically requiring pipe to withstand pressures in excess of 150 pounds per square inch. Most of our water transmission products, mainly welded steel pipe and bar-wrapped cylinder pipe, are made to project specifications for fully engineered, large-diameter, high-pressure water infrastructure systems. Other uses include power generation circulating water systems, penstocks, pipe piling, and water and wastewater treatment plants. Spiral welded pipe is manufactured in diameters ranging from 24 inches to 156 inches with wall thickness of 0.135 inches to 1.00 inch. Our rolled and welded capabilities allow for manufacturing diameters greater than 156 inches and wall thicknesses exceeding 1.00 inch. Lining and coating capabilities include cement mortar, polyurethane, epoxy, and polyethylene tape according to our customers&#8217; project specifications. Fabrication of fittings are performed at our own facilities providing installation contractors and project owners with a complete engineered system. Product is delivered to the jobsite using commercial trucks or marine transport as needed.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      4
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We manufacture Permalok&#174; steel casing pipe, which is a proprietary pipe joining system that employs a press-fit interlocking connection system. The Permalok&#174; product is generally installed in trenchless construction projects.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Precast Infrastructure and Engineered Systems. </i></b>We manufacture a variety of high-quality precast concrete products for water, wastewater, and adjacent infrastructure applications. Our precast products include RCP, manholes, box culverts, vaults, catch basins, oil water separators, pump lift stations, lined RCP and manholes, and other precast infrastructure products.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Under the Geneva Pipe and Precast product line, we manufacture RCP in sizes ranging from twelve inches to 96&#160;inches in diameter and in a variety of strength classes to ASTM International and American Association of State Highway and Transportation Officials (&#8220;AASHTO&#8221;) specifications which are primarily used for water transmission, sanitary sewer systems, storm drainage, and utilities fabrication. Our manholes, box culverts, vaults, and other structural products come in a variety of dimensions. Our lined products include high-density polyethylene (&#8220;HDPE&#8221;), polypropylene, or fiber reinforced plastic internal liners within manholes and RCP, providing additional corrosion protection in sanitary sewer and wastewater environments.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Under the ParkUSA product line, we manufacture pre-assembled stormwater, wastewater, and water management systems housed predominantly in precast concrete or steel housings, including water meter assemblies, break tank systems, pump lift stations, and backflow prevention systems. We also manufacture a variety of stormwater products including catch basins, canal valves, and interceptors capable of removing sediments, trash, and oil from stormwater runoff. Our wastewater products protect the environment and limit pollutants from entering sewer systems including interceptors designed to neutralize and macerate foreign materials such as fats, oils, and greases in wastewater for hospitals, service stations, restaurants, and other commercial applications. Our units are pre-assembled in a quality-controlled environment and are delivered ready to install to the job site, providing significant savings from onsite assembly.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Manufacturing and Product Development</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Engineered Steel Pressure Pipe. </i></b>Water infrastructure steel pipe manufacturing begins with the preparation of engineered drawings of each unique piece of pipe in a project. These drawings are prepared on our proprietary computer-aided design system and are used as blueprints to manufacture pipe. After the drawings are completed and approved, the manufacturing of engineered steel water pipe begins by feeding a steel coil continuously at a specified angle into a spiral weld mill which cold-forms the band into a tubular configuration with a spiral seam. Automated arc welders, positioned on both the inside and the outside of the tube, are used to weld the seam. The welded pipe is then cut at the specified length. After completion of the forming and welding phases, the finished cylinder is tested and inspected in accordance with project specifications, which may include 100% radiographic analysis of the weld seam. The cylinders are then coated and lined as specified. Possible coatings include polyurethane paint, polyethylene tape, epoxy, and cement mortar. The inside of the pipe cylinders can be lined with cement mortar, polyurethane, or epoxy. Following coating and lining, certain pieces may be custom fabricated as required for the project. This process is performed at our on-site fabrication facilities.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Precast Infrastructure and Engineered Systems. </i></b>Precast concrete products are manufactured using either a dry cast or wet cast concrete mix, depending on the size of the piece and the number of identical pieces to be manufactured. In the dry cast method, a concrete mix with low water content, known as zero-slump concrete, is poured into a mold and then densely compacted around the steel reinforcement using a variety of manufacturing methods. The concrete structure is immediately removed from the mold and allowed to cure in a high humidity environment to ensure proper hydration of the concrete. This method allows multiple pieces to be produced from the same mold each day and is most suitable for high volume, repetitive manufacturing. We also manufacture reinforced concrete pipe by producing a steel mesh cage, enclosing it in a form or mold, and then pouring concrete around it to produce the pipe. In the wet cast method, a concrete mix with relatively high water content is poured into a mold and allowed to cure in the mold, which can take from four to 16 hours.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In our Salt Lake City facility, we are in the process of building a fully automated production system for concrete pipe and manhole components that will replace the facility&#8217;s existing Transmatic pipe machine. This new technology will offer greater efficiency and safety and is set to increase RCP production capacity and manholes up to 60-inches in diameter. The Exact 2500 system is expected to be operational in 2024 and includes a new reinforced cage welding machine. To increase efficiencies across all of our precast facilities, we are upgrading our manufacturing process of vaults through the investment in monolithic precast forms systems.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We work hand-in-hand with our customers to develop custom water infrastructure products that help protect the environment. Many of our precast wastewater, stormwater, water management, and process systems include integrated Original Equipment Manufacturer components that we build out at our facilities into the finished solution. We build and test each unit to industry standards in our quality-controlled certified facilities. The units arrive at the jobsite ready to install, which reduces jobsite construction time and the need for specialized trades on site.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      5
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In April 2023, in line with our commitment to provide sustainable water management solutions, ParkUSA became a distributor of a stormwater diversion system used in wash pads and outdoor pavement areas. The Fox Environmental Diversion Systems automatically divert the &#8216;first flush&#8217; of rain or wash water from a wash bay or pad for treatment before it enters a storm drain network. We offer two diversion systems. The Demand Driven Diversion System is triggered with a hose and wash wand, while the First Flush Diversion System is best used in larger spaces and automatically activates with rainfall.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Technology. </i></b>Advances in technology help us produce high-quality products at competitive prices. We have invested in modern welding and inspection equipment to improve both productivity and product quality. We own interlocking pipe joining system technologies (Permalok&#174;) that provide an alternate joint solution used for connecting steel pipes. One of our team&#8217;s latest achievements is the development of the Permalok&#174; Radial Bending Joint, which enables steel pipe to be installed along a curved radius in microtunneling applications. This patent-pending technology is a groundbreaking advancement in trenchless construction and allows the pipe path to bend in any direction around existing utility lines, monuments, and building foundations. Benefits to the contractor include a smaller jobsite footprint, fewer shafts, and more precise execution of tunneling over longer distances.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In addition, we are licensed to manufacture a conventional RCP with a HDPE liner to protect concrete pipe from corrosion, and a lined manhole system, which integrates a monolithic precast concrete base with a plastic liner that is chemically resistant to raw sewage gases. Newly added to our corrosion-resistant lined products is the fiber reinforced polymer (&#8220;FRP&#8221;) panel for rehabilitating large wastewater structures. The half-inch thick panel consists of seven layers including a high-strength honeycomb and a FRP gel coat. The panels are mechanically anchored to the inside of a structure and sealed to form a gas and water-tight lining. The FRP panel system is ideal for rehabilitating existing large concrete wastewater structures and extending the structure service life by decades. Both Geneva and ParkUSA also hold several patents for commercially viable products.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">To stay current with technological developments in the United States and abroad, we participate in trade shows, industry associations, research projects, and vendor trials of new products. Our staff includes some of the most tenured and experienced pipe manufacturing professionals in the nation.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Intellectual Property.</i></b> We own various patents, registered trademarks and trade names and applications for, or licenses in respect of the same, that relate to our various products, including a number of innovative technologies relating to water infrastructure as well as precast infrastructure and engineered systems produced by ParkUSA. We also license intellectual property for use in certain of our products from unaffiliated third parties. We believe that our patents, trademarks, and trade names are adequately protected and that any expiration or other loss of one or more of our patents or other intellectual property rights would not have a material adverse effect upon our business, financial condition, or results of operations.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Quality Assurance.</i></b> We have quality management systems in place that assure we are consistently providing products that meet or exceed customer and applicable regulatory requirements. All of our steel pipe manufacturing facilities&#8217; quality management systems in the United States and Mexico are registered under a multi-site registration by the International Organization for Standardization (&#8220;ISO&#8221;). In addition to the ISO qualification, we are certified for specific steel pipe products or operations by the American Petroleum Institute. All of our steel pipe water transmission manufacturing facilities are certified by NSF for cement lining. We are certified for specific precast and reinforced concrete products or operations by the National Precast Concrete Association and the National Ready Mixed Concrete Association. We also follow and make products to the following standards and specifications: American Institute of Steel Construction, American Society of Mechanical Engineers, American Welding Society, Caltrans, American Water Works Association, ASTM International, AASHTO, and the ASCE. All of our steel pipe nondestructive evaluation technicians are qualified and certified to the guidelines of the American Society for Nondestructive Testing, Inc.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our quality assurance/quality control department is responsible for monitoring and measuring the characteristics of our products. Inspection capabilities include, but are not limited to, visual, dimensional, liquid penetrant, magnetic particle, hydrostatic, ultrasonic, conventional, computed and real-time x-ray/radioscopic, base material tensile, yield and elongation, sand sieve analysis, concrete compression, lining and coating dry film thickness, adhesion, concrete absorption, guided bend, charpy impact, hardness, metallurgical examinations, chemical analysis, spectrographic analysis, and finished product final inspection. Our products are not released for customer shipment until there is verification that all requirements have been met.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      6
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Marketing</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Engineered Steel Pressure Pipe. </i></b>Our seven steel pipe manufacturing facilities in Oregon, California, West Virginia, Texas, Missouri, and Mexico allow us to efficiently serve customers throughout North America. The primary customers for our water infrastructure steel pipe products are installation contractors for projects funded by public water agencies. Our marketing strategy emphasizes early identification of potential water projects, promotion of specifications consistent with our capabilities and products, and close contact with the project designers and owners throughout the design phase. Our in-house sales force is comprised of sales representatives, engineers, and support personnel who work closely with public water agencies, contractors, and engineering firms, often years in advance of a project bid date. These relationships allow us to identify and evaluate planned projects at early stages, and pursue these projects by offering technical support and resources. After an agency completes a design, they publicize the upcoming bid for a water transmission project. We then obtain detailed plans and develop our estimate for the pipe portion of the project. We typically bid to installation contractors who include our bid in their proposals to public water agencies. A public water agency generally awards the entire project to the contractor with the lowest responsive bid.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Precast Infrastructure and Engineered Systems. </i></b>Our six precast and water systems manufacturing facilities in Texas and Utah allow us to efficiently serve customers throughout Texas, the Intermountain West region, and surrounding states. The primary customers for our precast infrastructure and reinforced concrete products are installation contractors for various commercial, government, residential, and industrial projects. Our marketing strategy emphasizes our product quality and variety of offerings, competitive pricing, customer service, delivery, and technical expertise. We market many of our engineered systems with preinstalled components as having the advantage of reduced field install time, the elimination of multiple vendors, and higher quality control. Our sales force is comprised of in-house and third-party sales representatives, engineers, and support personnel who work closely with the customers to find the right product or solution for their specific need.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In November 2023, we launched an upgraded website to promote ParkUSA products at <span style="text-decoration: underline; ">www.parkusa.com</span>. The site organizes products by user categories, features product video and graphics, and promotes interaction with the sales team. Increased efficiencies include integrating requests for quotes, technical information, and catalogs directly with Salesforce, the customer relationship management system used by ParkUSA. The site will also capture user information to increase social marketing and have improved search engine optimization capabilities.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Competition</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Engineered Steel Pressure Pipe.</i></b> Most water infrastructure steel pipe projects are competitively bid and price competition is vigorous. Price competition may reduce the gross margin on sales, which may adversely affect overall profitability. Other competitive factors include timely delivery, customized specifications, and high freight costs which may limit the ability of manufacturers located in other market areas to compete with us. With water infrastructure steel pipe manufacturing facilities in Oregon, California, West Virginia, Texas, Missouri, and Mexico, we believe we can more effectively compete throughout North America. Our primary competitor in the western United States and southwestern Canada is West Coast Pipe. East of the Rocky Mountains, our primary competitors are Thompson Pipe Group, American SpiralWeld Pipe, and Mid America Pipe Fabricating&#160;&amp; Supply, LLC. Our competitors could build new facilities or expand capacity within our market areas. New or expanded facilities or new competitors could have a material adverse effect on our market share, product pricing, sales, gross margins, and overall profitability in our business.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Precast Infrastructure and Engineered Systems.</i></b> Our six precast and reinforced concrete product manufacturing facilities in Texas and Utah have several local competitors which are primarily other precast concrete manufacturers in the respective states where we operate. Our primary competitors are Oldcastle Infrastructure in Texas and Utah and AmeriTex Pipe&#160;&amp; Products LLC in Texas.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Raw Materials and Supplies</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We have at least two suppliers for most of our raw materials. We believe our relationships with our suppliers are positive and do not expect that we will experience shortages of raw materials or components essential to our production processes or that we will be forced to seek alternative sources of supply. Any shortages of raw materials may result in production delays and costs, which could have a material adverse effect on our financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      7
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;"><b><i>Engineered Steel Pressure Pipe.</i></b> The main raw component in our steel pipe manufacturing process is steel. We have historically purchased hot rolled steel coil and steel plate from both domestic and foreign steel mills. Our suppliers include Steel Dynamics, Inc., Nucor Corporation, United States Steel Corporation, SSAB, EVRAZ North America, ArcelorMittal, California Steel Industries, Inc., POSCO INTERNATIONAL, and Cleveland-Cliffs Inc. Steel is normally purchased after the steel pressure pipe orders are confirmed with an executed contract. Purchased steel represents a substantial portion of our cost of sales. The steel industry is highly cyclical in nature and steel prices fluctuate significantly, influenced by numerous factors beyond our control, including general economic conditions, availability of raw materials, energy costs, import duties, other trade restrictions, and currency exchange rates.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Precast Infrastructure and Engineered Systems.</i></b> The main raw components in our precast and reinforced concrete products are cement, steel, and aggregate, which are widely available commodities. When possible, we source these raw materials from suppliers near our facilities. During 2022, we experienced supply chain challenges for cement resulting from historically high demand as well as equipment outages, which led to suppliers allocating cement to customers in both Texas and Utah. We also rely on certain suppliers of valves, pumps, piping, and certain custom fabricated items, and experienced supply chain challenges for some of these materials during periods of 2022.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Seasonality</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our operations can be affected by seasonal variations and our results tend to be stronger in the second and third quarters of each year due to typically milder weather in the regions in which we operate. We are more likely to be impacted by severe weather events, such as hurricanes and excessive flash flooding, snow, ice, or frigid temperatures, which may cause temporary, short-term anomalies in our operational performance in certain localized geographic regions. However, these impacts usually have not been material to our operations as a whole. See Part&#160;I&#160;&#8212; Item&#160;1A. &#8220;Risk Factors&#8221; of this 2023 Form&#160;10&#8209;K for further discussion.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Government Regulations</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We are subject to various environmental, health, and employee safety laws and regulations. We believe we are in material compliance with these laws and regulations and do not currently believe that future compliance with such laws and regulations will have a material adverse effect on our capital expenditures, earnings, or competitive position. Nevertheless, we cannot guarantee that, in the future, we will not incur additional costs for compliance or that such costs will not be material.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In particular, we are subject to federal, state, local, and foreign environmental regulations, violations of which could lead to fines, penalties, other civil sanctions, or criminal sanctions. These environmental laws and regulations govern emissions to air; discharges to water; and the generation, handling, storage, transportation, treatment, and disposal of waste materials. We operate under numerous governmental permits and licenses relating to air emissions, stormwater runoff, and other environmental matters. We are subject to environmental laws requiring the investigation and cleanup of environmental contamination at properties we presently own or operate and at third-party disposal or treatment facilities to which these sites send or arrange to send hazardous waste. For example, we have been identified as a potentially responsible party at the Portland Harbor Superfund Site discussed in Note&#160;15 of the Notes to Consolidated Financial Statements in Part&#160;II&#160;&#8212; Item&#160;8. &#8220;Financial Statements and Supplementary Data&#8221; of this 2023 Form&#160;10&#8209;K. Estimating liabilities for environmental investigations and cleanup is complex and dependent upon a number of factors beyond our control which may change dramatically. We have no reserves for environmental investigation or cleanup, and we believe this is appropriate based on current information; however, we cannot provide assurance that our future environmental investigation and cleanup costs and liabilities will not result in a material expense.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Human Capital Resources</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">At Northwest Pipe Company, we believe that a commitment to developing our human capital resources is necessary to maintain our position as a leader in our marketplace. Key issues of culture, health and safety, and diversity and inclusion are key priorities in our discussions of our environmental, social, and governance (ESG) impact.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Employees.</i></b> As of December&#160;31, 2023, we had 1,325&#160;employees, the overwhelming majority of which were full-time. Approximately 65% of our workforce is employed on an hourly basis, while 35% is salaried. As of December&#160;31, 2023, none of our employees were subject to a collective bargaining agreement with a labor union; our employees who were previously members of a union elected to de-certify from union representation in November 2023. We consider our relations with our employees to be good. The average tenure of our employees is approximately 8 years of service. We believe the risk of employee or union led disruption to production is remote.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      8
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">Maintaining a sufficient number of skilled employees in order to support the operations at our corporate office and various manufacturing sites continues to be a key focus at Northwest Pipe Company. To that end, we offer a wide array of company-paid benefits to our employees both in the United States and Mexico. Benefits may vary between countries due to customary local practices and statutory requirements, or due to an employee&#8217;s full or part time status, work location, position, or tenure; however, we believe that as a whole our compensation packages are competitive relative to others in our industry. We are committed to ensuring equal pay for equal work regardless of an employee&#8217;s age, gender identity, race, ethnicity, sexual orientation, or physical or mental ability.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Culture.</i></b> Our key values are captured in the acronym ACT, which stands for Accountability, Commitment, and Teamwork, which we seek to demonstrate in our daily actions. Our executive leadership team guides our strategic direction to provide innovative water, environmental, and other infrastructure solutions for a wide range of commercial, residential, and municipal applications which are manufactured safely (see Health and Safety below) and efficiently. As a trusted partner to engineering firms, contractors, and water municipalities, we strive for operational, manufacturing, and client service excellence. Our success stems from our employees delivering product to our customers that consistently meets or exceeds their expectations.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We believe that our employees are our best resources. In order to recognize and reward the continued commitment and teamwork of our employees, when positions that may offer opportunities for advancement become open at Northwest Pipe Company, we first try to fill those positions from within. In 2023, we launched a leadership training and development program that seeks to enhance the existing skills of some of our longer tenured leaders while providing the opportunity for newer leaders in our organization to develop new skills as they advance in their careers.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We are committed to promoting and supporting fundamental human rights at our facilities, and have adopted a Human Rights Policy. In that policy, we affirm the rights and freedoms of women and indigenous people, and prohibit the use of child labor and all forms of forced labor, including prison labor, indentured labor, bonded labor, military labor, modern forms of slavery, and any form of human trafficking.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Health and Safety.</i></b> Our goal is to send each employee home safe at the end of the day. As such, safety is at the central core of our culture, and is infused at every level of our organization. More than just policy and procedure, our safety program gives equal focus to the human side of safety, integrating coaching and mentoring efforts with compliance-driven approaches. By instilling a deep commitment to safety that reaches from our Chief Executive Officer to our general laborers, we have achieved industry-leading safety performance. Over the last four years, our average total recordable incident rate was 2.17 and our average days away rate was 0.39, calculated in accordance with the Occupational Safety and Health Administration&#8217;s record keeping requirements. Each of our facilities utilize various interactions to achieve this performance, from a toolbox meeting to cover the day&#8217;s work and any particular safety concern, to monthly Safety Plan Meetings, &#8216;No Days Away&#8217; Safety Awards, and our employee-favorite, Safety Day. Each year, a facility may close for one full day, or &#8220;Safety Day,&#8221; to cover safety training and updates. Outside vendors demonstrate the latest safety procedures and equipment in a hands-on, fun atmosphere.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As a manufacturer, we work hard to eliminate hazards associated with high-risk work and have measures in place that include programs for fall protection, heavy equipment operation, and lockout/tagout. We also focus on personal safety issues, such as complacency and fatigue. We offer our employees medical, dental, and vision insurance coverage to support their physical and mental well-being.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Diversity and Inclusion.</i></b>&#160;We welcome and embrace differences in age, gender identity, race, sexual orientation, physical or mental ability, ethnicity, socio-economic status, veteran status, or any other characteristics that make our employees unique. We value these differences as strengths and believe our resilience and achievements as a company culminate from each individual&#8217;s background, perspective, and skillset. As of December&#160;31, 2023, 51% of our employees in the United States self-identified as belonging to one or more of the following racial/ethnic groups: American Indian or Alaskan Native, African American/Black, Asian, Hispanic or Latino, and Native Hawaiian or other Pacific Islander. As of December&#160;31, 2023, 13% of our employees self-identified as female.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our goal is to build a skilled and strong workforce that is not only diverse in race and ethnicity, but also diverse in age, gender identity, sexual orientation, physical or mental ability, and perspective. Our Affirmative Action Program (&#8220;AAP&#8221;) strives to hire, recruit, train, and promote employees without regard to race, age, religion, color, sex, national origin, physical or mental disability, marital or veteran status, sexual orientation, gender identity, or any other classification protected by law. To support these efforts, the AAP for our facilities in the United States is reviewed annually by a third-party consultant, establishing annual hiring goals for women, minorities, veterans, and individuals with disabilities.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Ethics and Compliance.</i></b> We take pride in the high standards of conduct that identifies us as a company. We have controls in place relating to compliance with our Code of Business Conduct and Ethics (&#8220;Code&#8221;), including a requirement for employees to review and understand the requirements of our Code, as well as an established whistleblower hotline and related procedures. Our Code, along with other key governance policies, is published on our website.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      9
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">We conduct training on our Code in regular intervals during the employee&#8217;s life cycle with us. The most recent ethics training for all salaried employees was conducted in the fourth quarter of 2022. We also conduct anti-trust training annually. The most recent anti-trust training for certain senior management and sales employees was conducted in the first quarter of 2023. In addition, we conduct Respect in the Workplace training which focuses on inclusion, communication, and attentiveness to workplace behaviors and their impact on others. The most recent Respect in the Workplace training at all of our facilities was conducted in 2022.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Information About Our Executive Officers</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Information about our executive officers is set forth under the caption &#8220;Directors, Executive Officers, Promoters and Control Persons&#8221; in Part&#160;III&#160;&#8212; Item&#160;10. &#8220;Directors, Executive Officers and Corporate Governance&#8221; of this 2023 Form&#160;10&#8209;K and is incorporated herein by reference.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Available Information</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our internet address is www.nwpipe.com. Our Annual Reports on Form&#160;10&#8209;K, Quarterly Reports on Form&#160;10&#8209;Q, Current Reports on Form&#160;8&#8209;K, and amendments to those reports filed or furnished pursuant to Section&#160;13(a) or 15(d) of the Exchange Act are available free of charge through our website as soon as reasonably practicable after we electronically file such material with, or furnish it to, the SEC. All statements made in any of our securities filings, including all forward-looking statements or information, are made as of the date of the document in which the statement is included, and we do not assume or undertake any obligation to update any of those statements or documents unless we are required to do so by law. Our website and the information contained therein or connected thereto are not incorporated into this 2023 Form&#160;10&#8209;K.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Additionally, the SEC maintains an internet site that contains reports, proxy and information statements, and other information regarding issuers that file electronically with the SEC at www.sec.gov.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item1a" title="item1a" href="#"></a>Item</b>&#160;<b>1A.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Risk Factors</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>You should carefully consider the following factors, together with all the other information included in this 2023 Form&#160;10</i>&#8209;<i>K, in evaluating our company and our business. If any of the following risks actually occur, our business, financial condition, results of operations, or cash flows could be materially and adversely affected, and the value of our stock could decline. The risks and uncertainties described below are those that we currently believe may materially affect our company. Additional risks and uncertainties not presently known to us or that we currently deem immaterial also may impair our business operations. As such, you should not consider this list to be a complete statement of all potential risks or uncertainties.</i></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Risk Factor Summary</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">This risk factor summary contains a high-level overview of certain of the principal factors and uncertainties that make an investment in our securities risky, including risks related to our industry and end markets, our business, our supply chain and production process, our financial condition, our internal control over financial reporting, and our common stock. The following summary is not complete and should be read together with the more detailed discussion of these and the other factors and uncertainties that follow before making an investment decision regarding our securities. The principal factors and uncertainties that make an investment in our securities risky include the following.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Risks Related to Our Industry and End Markets</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Project delays in public water transmission projects could adversely affect our business;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">A downturn in government spending related to public water transmission projects could adversely affect our business;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Our Engineered Steel Pressure Pipe segment faces an overcapacity situation due to recent capacity expansions as well as the potential for increased competition from substitute products from manufacturers of concrete pressure pipe, ductile iron, polyvinyl chloride (&#8220;PVC&#8221;), and high-density polyethylene pipe;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">The success of our business is affected by general and local economic conditions, and our business may be adversely affected by an economic slowdown or recession, or an inability of our pricing to keep pace with inflation of input costs; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">We are subject to stringent environmental, health, and safety laws, which may require us to incur substantial compliance and remediation costs, thereby reducing our profits.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      10
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Risks Related to Our Business</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">We face risks in connection with the integration of recent or future potential acquisitions and the implementation of future potential divestitures;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Recent or future potential acquisitions could adversely affect operating results, dilute shareholders&#8217; equity, or cause us to incur additional debt or assume contingent liabilities;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Our quarterly results of operations are subject to significant fluctuation;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Operating problems in our business could adversely affect our business, financial position, results of operations, or cash flows;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">We may be unable to develop or successfully market new products or our products might not obtain necessary approvals or achieve market acceptance, which could adversely affect our growth;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Our recognition of revenue over time includes estimates;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">We have a foreign operation which exposes us to the risks of doing business abroad;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Our Engineered Steel Pressure Pipe backlog is subject to reduction and cancelation;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Future outbreaks of infectious diseases, including further developments in the coronavirus disease 2019 (&#8220;COVID&#8209;19&#8221;) pandemic, may have an adverse impact on our business;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">The conflicts in Ukraine and Israel may have an adverse impact on our business; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Climate change and related regulatory requirements present an ongoing risk to our business operations.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Risks Related to Our Supply Chain and Production Process</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Our business may be adversely impacted by staffing shortages, other labor matters, and work stoppages;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Fluctuations in steel prices and availability may affect our future results of operations;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">We may be subject to claims for damages for defective products, which could adversely affect our business, financial position, results of operations, or cash flows;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">We may not be able to recover costs and damages from vendors that supply defective materials; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Our information technology systems can be negatively affected by cybersecurity threats.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Risks Related to Our Financial Condition</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">We will need to substantially increase working capital if market conditions and customer order levels grow;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Our debt obligations could have a material adverse effect on our business, financial condition, results of operations, or cash flows;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">A portion of our indebtedness is subject to interest rate risk, which could cause our debt service obligations to increase significantly;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Our failure to comply with covenants in our debt agreements could result in our indebtedness being immediately due and payable, which could have a material adverse effect on our business, financial condition, results of operations, or cash flows; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Disruptions in the financial markets, including in the banking industry, and a general economic slowdown could cause us to be unable to obtain financing or receive customer payments and expose us to risks related to the overall macro-economic environment, which could have a material adverse effect on our business, financial condition, results of operations, or cash flows.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Risks Related to Our Internal Control Over Financial Reporting</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">We have identified material weaknesses in internal controls in prior years.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Risks Related to Our Common Stock</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">The relatively low trading volume of our common stock may limit your ability to sell your shares;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">The market price of our common stock could be subject to significant fluctuations;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">We cannot guarantee that our share repurchase program of our common stock will be fully consummated or that it will enhance long-term stockholder value. Share repurchases could also increase the volatility of the trading price of our common stock and could diminish our cash reserves thereby impacting our ability to execute our growth strategy; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Certain provisions of our governing documents and Oregon law could discourage potential acquisition proposals.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      11
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Risks Related to Our Industry and End Markets</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Project delays in public water transmission projects could adversely affect our business. </b>The public water agencies constructing water transmission projects generally announce the projects well in advance of the bidding and construction process. It is not unusual for SPP projects to be delayed and rescheduled. Projects are delayed and rescheduled for a number of reasons, including changes in project priorities, difficulties in complying with environmental and other government regulations, changes in ability to obtain adequate project funding, and additional time required to acquire rights-of-way or property rights. Delays in public water transmission projects may occur with insufficient notice to allow us to replace those projects in our manufacturing schedules. As a result, our business, financial position, results of operations, or cash flows may be adversely affected by unplanned downtime or reductions to facility utilization levels.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>A downturn in government spending related to public water transmission projects could adversely affect our business. </b>Our business is primarily dependent upon spending on public water transmission projects, including water infrastructure upgrades, repairs, and replacement and new water infrastructure spending, which in turn depends on, among other things:</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">the need for new or replacement infrastructure;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">the priorities placed on various projects by governmental entities;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">federal, state, and local government spending levels, including budgetary constraints related to capital projects and the ability to obtain financing; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">the ability of governmental entities to obtain environmental approvals, right-of-way permits, and other required approvals and permits.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Decreases in the number of, or government funding of, public water transmission projects could adversely affect our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Our Engineered Steel Pressure Pipe segment faces an overcapacity situation due to recent capacity expansions as well as the potential for increased competition from substitute products from manufacturers of concrete pressure pipe, ductile iron, polyvinyl chloride, and high-density polyethylene pipe. </b>Most SPP projects are competitively bid and price competition can be vigorous. In a market that already has overcapacity issues, recent increases in capacity have negatively affected our sales, gross margins, and overall profitability. Other competitive factors include timely delivery, ability to meet customized specifications, and high freight costs. Although our SPP manufacturing facilities in Oregon, California, West Virginia, Texas, Missouri, and Mexico allow us to compete throughout North America, our competitors could build new facilities or expand capacity within our market areas. New or expanded facilities or new competitors could have a material adverse effect on our market share, product pricing, sales, gross margins, and overall profitability in our business.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Water transmission pipe is manufactured generally from steel, concrete, ductile iron, PVC, or HDPE. Each pipe material has advantages and disadvantages. Steel and concrete are more common materials for larger-diameter water transmission pipelines because ductile iron pipe generally is limited in diameter due to the manufacturing process. The public agencies and engineers who determine the specifications for water transmission projects analyze these pipe materials for suitability for each project. Individual project circumstances normally dictate the preferred material. If we experience cost increases in raw materials, labor, and overhead specific to our industry or the location of our facilities, while competing products or companies do not experience similar changes, we could experience an adverse change in the demand, price, and profitability of our products, which could have a material adverse effect on our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>The success of our business is affected by general and local economic conditions, and our business may be adversely affected by an economic slowdown or recession, or an inability of our pricing to keep pace with inflation of input costs. </b>We are subject to national and regional economic conditions. These conditions include, but are not limited to, recession, inflation, interest rates, unemployment levels, the state of the housing market, and gasoline prices. These conditions and the economy in general could be affected by significant national or international events such as a global health crisis, acts of terrorism, or acts of war (including the Russian invasion of Ukraine and the current escalating Israel-Palestine conflict).</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Periods of economic slowdown or recession in the United States, or the public perception that one may occur, have and could further decrease the demand for our products, affect the price of our products, and adversely impact our business. We have been impacted in the past by the general slowing of the economy, and the economic slowdown has had an adverse impact on our business, financial position, results of operations, or cash flows. Alternatively, our business may be adversely impacted by high inflation of input costs.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      12
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">We currently conduct a significant portion of our precast and reinforced concrete products business in Texas and Utah, which we estimate represented approximately 51% and 41%, respectively, of Precast net sales for the year ended December&#160;31, 2023. Local economic conditions depend on a variety of factors, including national economic conditions, local and state budgets, infrastructure spending, and the impact of federal cutbacks. Any decrease in construction activity in Texas or Utah could have a material adverse effect on our business, financial condition, and results of operations.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;"><b>We are subject to stringent environmental, health, and safety laws, which may require us to incur substantial compliance and remediation costs, thereby reducing our profits. </b>We are subject to many federal, state, local, and foreign environmental, health, and safety laws and regulations, particularly with respect to the use, handling, treatment, storage, discharge, and disposal of substances and hazardous wastes used or generated in our manufacturing processes. Compliance with these laws and regulations is a significant factor in our business. We have incurred, and expect to continue to incur, significant expenditures to comply with applicable environmental laws and regulations. Our failure to comply with applicable environmental laws and regulations and permit requirements could result in civil or criminal fines or penalties or enforcement actions, including regulatory or judicial orders enjoining or curtailing operations or requiring corrective measures, installation of pollution control equipment, or remedial actions.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We are currently, and may in the future be, required to incur costs relating to the environmental assessment or environmental remediation of our property, and for addressing environmental conditions, including, but not limited to, the issues associated with our Portland, Oregon facility as discussed in Note&#160;15 of the Notes to Consolidated Financial Statements in Part&#160;II&#160;&#8212; Item&#160;8. &#8220;Financial Statements and Supplementary Data&#8221; of this 2023 Form&#160;10&#8209;K. Some environmental laws and regulations impose liability and responsibility on present and former owners, operators, or users of facilities and sites for contamination at such facilities and sites without regard to causation or knowledge of contamination. Consequently, we cannot assure you that existing or future circumstances, the development of new facts, or the failure of third parties to address contamination at current or former facilities or properties will not require significant expenditures by us.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We expect to continue to be subject to increasingly stringent environmental, health, and safety laws and regulations. It is difficult to predict the future interpretation and development of environmental, health, and safety laws and regulations or their impact on our future earnings and operations. We anticipate that compliance with these laws and regulations will continue to require capital expenditures and operating costs. Any increase in these costs, or unanticipated liabilities arising, for example, out of discovery of previously unknown conditions or more aggressive enforcement actions, could adversely affect our results of operations, and there is no assurance that they will not have a material adverse effect on our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Risks Related to Our Business</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>We face risks in connection with the integration of recent or future potential acquisitions and the implementation of future potential divestitures. </b>Acquiring businesses that expand and/or complement our operations has been an important element of our business strategy, and we continue to evaluate potential acquisitions that may expand and/or complement our business. We may not be able to successfully identify attractive acquisition candidates or negotiate favorable terms in the future. Furthermore, our ability to effectively integrate any future acquisitions will depend on, among other things, the adequacy of our implementation plans, the ability of our management to oversee and operate effectively the combined operations, and our ability to achieve desired operational efficiencies. We may face challenges in integrating cultures, information systems, and business processes and policies in a seamless manner that minimizes any adverse impact on customers, suppliers, employees, and other parties. Acquired businesses may have liabilities, adverse operating issues, or other matters of concern arise following the acquisition that we fail to discover through due diligence prior to the acquisition. Further, our acquisition targets may not have as robust internal controls over financial reporting as would be expected of a public company, and therefore could lead to potential internal control deficiencies or material weaknesses. Acquisitions may also result in the recording of goodwill and other intangible assets that are subject to potential impairment in the future that could harm our financial results. We may also consider other alternatives in order to strategically position our business and continue to compete in our markets, which may include joint ventures and/or divestitures. Our failure to successfully integrate the operations of any businesses that we may acquire in the future or our inability to attract a business partner in which to enter into a joint venture or a buyer willing to purchase our assets may adversely affect our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We acquired ParkUSA on October&#160;5, 2021. The success of this acquisition depends, in part, on our ability to successfully integrate this business with our current operations and to realize the anticipated benefits, including synergies, from the acquisition. There are a number of challenges and risks involved in our ability to successfully integrate ParkUSA with our current business and to realize the anticipated benefits of this acquisition, including all of the risks identified in the previous paragraph. Any of these factors could have a material adverse effect on our business, financial condition, results of operations, or cash flows.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      13
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Recent or future potential acquisitions could adversely affect operating results, dilute shareholders</b>&#8217;<b> equity, or cause us to incur additional debt or assume contingent liabilities</b>. To increase business, broaden the diversification of our products, or for other business or strategic reasons, we may acquire other companies in the future. For example, in October 2021 we acquired ParkUSA. The acquisition of ParkUSA and any other acquisitions that we may enter into from time to time, involve a number of risks that could harm our business and result in ParkUSA and/or any other acquired business not performing as expected, including:</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">problems integrating the acquired operations, personnel, technologies, or products with the existing business and products;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">failure to achieve cost savings or other financial or operating objectives with respect to an acquisition;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">possible adverse short-term effects on cash flows or operating results, and the use of cash and other resources for the acquisition that might affect liquidity, and that could have been used for other purposes;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">diversion of management&#8217;s time and attention from our existing business to the acquired business;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">potential failure to retain key technical, management, sales, and other personnel of the acquired business;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">difficulties in retaining relationships with suppliers and customers of the acquired business, particularly where such customers or suppliers compete with us;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">difficulties in the integration of financial reporting systems, which could cause a delay in the issuance of, or impact the reliability of the consolidated financial statements;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">failure to comply with Section&#160;404 of the Sarbanes-Oxley Act of 2002 (&#8220;Sarbanes-Oxley Act&#8221;), including a delay in or failure to successfully integrate these businesses into our internal control over financial reporting, such as the material weaknesses in our internal control over financial reporting as of December&#160;31, 2022 identified in connection with the design and implementation of the ERP system implemented on August&#160;1, 2022 at ParkUSA, and since remediated, as described in Part&#160;II&#160;&#8212; Item&#160;9A, &#8220;Controls and Procedures&#8221; of this 2023 Form&#160;10&#8209;K;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">insufficient experience with technologies and markets in which the acquired business is involved, which may be necessary to successfully operate and integrate the business;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">subsequent impairment of goodwill and acquired long-lived assets, including intangible assets;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">failure to achieve the expected return on investment for capital deployed to the organic growth strategies associated with prior acquisitions; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">assumption of liabilities including, but not limited to, lawsuits, environmental liabilities, regulatory liabilities, tax examinations, and warranty issues.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We may enter into acquisitions that are dilutive to earnings per share or that adversely impact margins as a whole. In addition, acquisitions could require investment of significant financial resources and require us to obtain additional equity financing, which may dilute shareholders&#8217; equity, or require us to incur indebtedness.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Our quarterly results of operations are subject to significant fluctuation. </b>Our net sales and operating results may fluctuate significantly from quarter to quarter due to a number of factors, including:</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">the commencement, completion, or termination of contracts during any particular quarter;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">unplanned down time due to project delays or mechanical failure;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">underutilized capacity or facility productivity;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">adverse weather conditions;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">fluctuations in the cost of raw materials;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">disruptions in our supply chain; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">competitive pressures.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Results of operations in any period are not indicative of results for any future period, and comparisons between any two periods may not be meaningful.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Operating problems in our business could adversely affect our business, financial position, results of operations, or cash flows. </b>Our manufacturing operations are subject to typical hazards and risks relating to the manufacture of similar products such as:</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">explosions, fires, inclement weather, and natural disasters;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">mechanical failure;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">unscheduled downtime;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">labor shortages;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">loss of process control and quality;</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      14
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">disruptions to supply;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">raw materials quality defects;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">service provider delays or failures;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">transportation delays or failures;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">an inability to obtain or maintain required licenses or permits; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">environmental hazards such as chemical spills, discharges, or releases of toxic or hazardous substances or gases into the environment or workplace.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The occurrence of any of these operating problems at our facilities may have a material adverse effect on the productivity and profitability of a particular manufacturing facility or on our operations as a whole, during and after the period of these operating difficulties. The operating problems listed above may also cause personal injury and loss of life, severe damage to or destruction of property and equipment, and environmental damage. In addition, individuals could seek damages for alleged personal injury or property damage. Furthermore, we could be subject to present and future claims with respect to workplace injury, exposure to hazardous materials, workers&#8217; compensation, and other matters. Although we maintain property and casualty insurance of the types and in the amounts that we believe are customary for our industries, we cannot assure you that our insurance coverage will be adequate for liability that may be ultimately incurred or that such coverage will continue to be available to us on commercially reasonable terms. Any claims that result in liability exceeding our insurance coverage could have an adverse effect on our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>We may be unable to develop or successfully market new products or our products might not obtain necessary approvals or achieve market acceptance, which could adversely affect our growth. </b>We will continue to actively seek to develop new products and to expand our existing products into new markets, but we cannot assure you that we will be successful in these efforts. If we are unsuccessful in developing and marketing new products, expanding into new markets, or we do not obtain or maintain requisite approvals for our products, the demand for our products could be adversely affected, which could adversely affect our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Our recognition of revenue over time includes estimates. </b>SPP revenue for water infrastructure steel pipe products is recognized over time as the manufacturing process progresses, and is measured by the costs incurred to date relative to the estimated total direct costs to fulfill each contract (cost-to-cost method). Estimated total costs of each contract are reviewed on a monthly basis by project management and operations personnel for all active projects. All cost revisions that result in a material change in gross profit are reviewed by senior management personnel.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Significant judgment is required in estimating total costs and measuring the progress of project completion, as well as whether a loss is expected to be incurred on the contract. Changes in job performance, job conditions, and estimated profitability, including those arising from contract change orders, contract penalty provisions, foreign currency exchange rate movements, changes in raw materials costs, and final contract settlements may result in revisions to estimates of revenue, costs, and income, and are recognized in the period in which the revisions are determined. Due to the variability of events affecting our estimates which have a material impact on our contract accounting, actual results could differ from those estimates, which could adversely affect our financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>We have a foreign operation which exposes us to the risks of doing business abroad. </b>Our facility in San Luis R&#237;o Colorado, Mexico primarily exports products to the United States. We may operate in additional countries in the future. Any material changes in the quotas, regulations, tariffs, or duties on imports imposed by the United States government and our agencies, or on exports imposed by these foreign governments and their agencies could adversely affect our foreign operations.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We also sell some of our products internationally, most often into Canada. Our foreign activities are also subject to various other risks of doing business in a foreign country, including:</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">currency fluctuations;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">the imposition of duties, tariffs, and other trade barriers;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">transportation delays and interruptions;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">political, social, and economic instability and disruptions;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">government embargoes or foreign trade restrictions;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">import and export controls;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">labor unrest and current and changing regulatory environments;</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      15
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">limitations on our ability to enforce legal rights and remedies; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">potentially adverse tax consequences.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">No assurance can be given that our operations may not be adversely affected in the future. Any of these events could have an adverse effect on our operations in the future by reducing the demand for our products and services, decreasing the prices at which we can sell our products, or increasing costs such that there could be an adverse effect on our business, financial position, results of operations, or cash flows. We cannot assure you that we will continue to operate in compliance with applicable customs, currency exchange control regulations, transfer pricing regulations, or any other laws or regulations to which we may be subject, or that any such regulations or laws will not be modified. Any failure by us to comply with any such applicable regulations or laws, or any changes in any such regulations or laws could have a material adverse effect on our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Our Engineered Steel Pressure Pipe backlog is subject to reduction and cancelation. </b>Backlog, which represents the balance of remaining performance obligations under signed contracts for SPP water infrastructure steel pipe products for which revenue is recognized over time, was $273&#160;million as of December&#160;31, 2023. Our backlog is subject to fluctuations; moreover, cancelations of purchase orders, change orders on contracts, or reductions of product quantities could materially reduce our backlog and, consequently, future revenues. Our failure to replace canceled or reduced backlog could result in lower revenues, which could adversely affect our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Future outbreaks of infectious diseases, including further developments in the COVID</b>&#8209;<b>19 pandemic, may have an adverse impact on our business. </b>The impacts of the COVID&#8209;19 pandemic, and the resurgence of new COVID&#8209;19 virus variants, on global and domestic economic conditions, including the impacts of labor and raw material shortages, the long-term potential to reduce or delay funding of municipal projects, and the continued disruptions to and volatility in the financial markets remain uncertain. While the COVID&#8209;19 pandemic has caused various direct and indirect financial impacts associated with project bidding, execution, and product deliveries over the past couple of years, we remain unable to predict the ultimate impact that the COVID&#8209;19 pandemic may have on our business, future results of operations, financial position, or cash flows. We continue to monitor the impact of the COVID&#8209;19 pandemic on all aspects of our business. The impacts of the COVID&#8209;19 pandemic may also exacerbate other risks discussed in Part&#160;I&#160;&#8211; Item&#160;1A. &#8220;Risk Factors&#8221; in this 2023 Form&#160;10&#8209;K, any of which could have a material effect on us. This situation is changing rapidly and additional impacts may arise that we are not aware of currently.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>The conflicts in Ukraine and Israel may have an adverse impact on our business. </b>Current conflicts around the world, including those in Ukraine and Israel, and related sanctions could damage or disrupt international commerce and the global economy. We continue to monitor the impacts of the conflicts in Ukraine and Israel on all aspects of our business, including how it will impact our employees, customers, supply chain, and distribution network. Impacts include financial and commodity volatility in raw material and other input costs and availability, as well as volatility in the financial markets. The severity of impacts on the global economy and our business, results of operations, financial position and cash flows remain unknown.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Climate change and related regulatory requirements present an ongoing risk to our business operations</b>. The rise in average global temperatures has resulted in elevated levels of carbon dioxide and other greenhouse gases in the atmosphere, altering long-term weather patterns that lead to an increased frequency and severity of natural disasters. Severe weather conditions could potentially disrupt our manufacturing and construction activities; areas prone to flooding could face delays resulting in lost production and extreme heat could threaten the health and well-being of our employees. Given the changes in weather patterns brought on by climate change, essentially all of our facilities are vulnerable to extreme conditions and natural disasters, increasing the risk of damage to our facilities and products. Those risks could also hinder our supply chain processes and limit our access to raw materials or our ability to fulfill orders for customers. Evolving governmental regulations to combat climate change risks would likely increase our costs for items including energy and transportation, which may prove disproportional to similar increases in costs experienced by competitors. We anticipate heightened regulatory focus in the near future and failure to comply with new environmental regulations and policies could result in reputational damage with our stakeholders, resulting in decreased demand for our products and lower than expected revenue.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Risks Related to Our Supply Chain and Production Process</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Our business may be adversely impacted by staffing shortages, other labor matters, and work stoppages.</b> Current nationwide staffing shortages have impacted our ability to attract both skilled and unskilled workers needed for our manufacturing operations, and the inability to fully staff any one of our facilities may impact our ability to work on projects and, as a result, could have a material adverse effect on our business, financial position, results of operations, or cash flows. A work stoppage or other limitation on production could occur at our facilities or our suppliers&#8217; facilities for any number of reasons, including as a result of absenteeism, public health issues, labor issues, including disputes under a collective bargaining agreement or in connection with negotiation of new collective bargaining agreements, or for other reasons.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      16
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We believe that our relations with our employees are good, however no assurances can be made that we will not experience conflicts with labor unions, other groups representing employees, or our employees in general. Although none of our employees are currently covered by collective bargaining agreements, our employees may elect to be represented by labor unions in the future, which could increase our labor costs</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Additionally, the employees of some of our customers are unionized. Any strikes, other labor matters, or work stoppages experienced by our customers may impact our ability to work on projects and, as a result, have an adverse effect on our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Fluctuations in steel prices and availability may affect our future results of operations. </b>Purchased steel represents a substantial portion of SPP cost of sales. The steel industry is highly cyclical in nature, and at times, pricing can be highly volatile due to a number of factors beyond our control, including general economic conditions, import duties, other trade restrictions, and currency exchange rates. Over the past three years, steel prices have fluctuated significantly. Our average cost for a ton of steel was approximately $994 per ton in 2023, $1,174 per ton in 2022, and $1,291 per ton in 2021. In 2023, our monthly average steel purchasing costs ranged from a high of approximately $1,394 per ton to a low of approximately $801 per ton. This volatility can significantly affect our gross profit.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Although we seek to recover increases in steel prices through price increases in our products, we have not always been successful. Any increase in steel prices that is not offset by an increase in our prices could have an adverse effect on our business, financial position, results of operations, or cash flows. In addition, if we are unable to acquire timely steel supplies, we may need to decline project bidding opportunities, which could also have an adverse effect on our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>We may be subject to claims for damages for defective products, which could adversely affect our business, financial position, results of operations, or cash flows. </b>We warrant our products to be free of certain defects. We have, from time to time, had claims alleging defects in our products. We cannot assure you that we will not experience material product liability losses in the future or that we will not incur significant costs to defend such claims. While we currently have product liability insurance, we cannot assure you that our product liability insurance coverage will be adequate for liabilities that may be incurred in the future or that such coverage will continue to be available to us on commercially reasonable terms. Any claims relating to defective products that result in liabilities exceeding our insurance coverage could have an adverse effect on our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>We may not be able to recover costs and damages from vendors that supply defective materials. </b>We may receive defective materials from our vendors that are incorporated into our products during the manufacturing process. The cost to repair, remake, or replace defective products could be greater than the amount that can be recovered from the vendor, in addition to creating inefficiencies in our production scheduling. Such excess costs could have an adverse effect on our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Our information technology systems can be negatively affected by cybersecurity threats.</b><b><i> </i></b>Increased global information technology security requirements, vulnerabilities, threats, and a rise in sophisticated and targeted computer crime pose a risk to the security of our systems, networks, and the confidentiality, availability, and integrity of our data. Despite our efforts to protect sensitive information and confidential and personal data, our facilities and systems and those of our third-party service providers may be vulnerable to security breaches. This could lead to disclosure, modification, or destruction of proprietary, employee, and other key information and operational disruptions. To the extent that any disruption or security breach results in a loss or damage to our data, or an inappropriate disclosure of confidential or protected personal information, it could cause significant damage to our reputation, affect our relationships with our customers, suppliers, and employees, lead to claims against us, and ultimately harm our business. Additionally, we may be required to incur significant costs to protect against damage caused by these disruptions or security breaches in the future. Any of the foregoing factors could have an adverse effect on our business, financial position, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      17
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Risks Related to Our Financial Condition</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>We will need to substantially increase working capital if market conditions and customer order levels grow.</b> If market conditions and SPP customer order levels were to dramatically increase, we would have to increase our working capital substantially, as it takes several months for project production to be translated into cash receipts. In general, revolving loan borrowings and letters of credit under the Credit Agreement dated June&#160;30, 2021 with Wells Fargo Bank, National Association (&#8220;Wells Fargo&#8221;), as administrative agent, and the lenders from time to time party thereto, including the initial sole lender, Wells Fargo (the &#8220;Lenders&#8221;), as amended by the Incremental Amendment dated October&#160;22, 2021, the Second Amendment to Credit Agreement dated April&#160;29, 2022, and the Third Amendment to Credit Agreement dated June&#160;29, 2023 (together, the &#8220;Amended Credit Agreement&#8221;), are limited to the aggregate amount of $125&#160;million (&#8220;Revolver Commitment&#8221;), with an option for us to increase that amount by $50&#160;million, subject to provisions of the Amended Credit Agreement. As of December&#160;31, 2023 under the Amended Credit Agreement, we had $54.5&#160;million of outstanding revolving loan borrowings, $1.1&#160;million of outstanding letters of credit, and additional borrowing capacity of approximately $69&#160;million. We may not have sufficient availability under the Amended Credit Agreement to borrow the amounts we need, and other opportunities to borrow additional funds or raise capital in the equity markets may be limited or nonexistent. A shortage in the availability of working capital could have a material adverse effect on our business, financial condition, results of operations, or cash flows.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Our debt obligations could have a material adverse effect on our business, financial condition, results of operations, or cash flows. </b>We have financed our operations through cash flows from operations, available borrowings, and other financing arrangements. As of December&#160;31, 2023, we had $54.5&#160;million of outstanding revolving loan borrowings, $10.8&#160;million of current debt, $90.2&#160;million of operating lease liabilities, and $7.5&#160;million of finance lease liabilities. We could incur additional revolving loan borrowings under the Amended Credit Agreement in the future to finance increases in working capital, share repurchases, mergers, acquisitions, and capital expenditures, fund negative operating cash flows, or for other corporate purposes. These borrowings could become significant in the future.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our current and future debt and debt service obligations could:</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">limit our ability to obtain additional financing for working capital or other purposes in the future;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">reduce the amount of funds available to finance our operations, capital expenditures, and other activities;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">increase our vulnerability to economic downturns, illiquid capital markets, and adverse industry conditions;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">limit our flexibility in responding to changing business and economic conditions, including increased competition;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">place us at a disadvantage when compared to our competitors that have less debt; and</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">with respect to our borrowings that bear interest at variable rates, cause us to be vulnerable to increases in interest rates.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our ability to make scheduled payments on our current and future debt will depend on our future operating performance and cash flows, which are subject to prevailing economic conditions, prevailing interest rate levels, and other financial, competitive, and business factors, many of which are beyond our control. Our inability to make scheduled payments on our debt or any of the foregoing factors could have a material adverse effect on our business, financial condition, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">To the extent we have not hedged against rising interest rates, an increase in the applicable benchmark interest rates would increase our cost of servicing our indebtedness and could have a material adverse effect on our business, financial condition, results of operations, or cash flows.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>A portion of our indebtedness is subject to interest rate risk, which could cause our debt service obligations to increase significantly.</b> Borrowings under the Amended Credit Agreement and our current debt are, and additional borrowings in the future may be, at variable rates of interest that expose us to interest rate risk. If interest rates increase, our debt service obligations on the variable rate indebtedness will increase even though the amount borrowed will remain the same, and our net income and cash flows, including cash available for servicing our indebtedness, will correspondingly decrease. We have, and may in the future enter into additional, interest rate swaps for a portion of our variable rate debt whereby we exchange floating for fixed rate interest payments in order to reduce exposure to interest rate volatility. However, any interest rate swaps into which we enter may not fully mitigate our interest rate risk and may expose us to higher total debt service cost in a declining rate environment.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Our failure to comply with covenants in our debt agreements could result in our indebtedness being immediately due and payable, which could have a material adverse effect on our business, financial condition, results of operations, or cash flows. </b>The agreements governing our debt include covenants that impose certain requirements with respect to our financial condition and results of operations and general business activities. These covenants place restrictions on, among other things, our ability to incur certain additional debt and to create liens or other encumbrances on assets. In addition, our obligations under the Amended Credit Agreement are secured by a senior security interest in substantially all of our and our subsidiaries&#8217; assets.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      18
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">Our ability to comply with the covenants under our debt instruments in the future is uncertain and will be affected by our results of operations and financial condition as well as other events and circumstances beyond our control. If market and other economic conditions deteriorate, our ability to comply with these covenants may be impaired. A failure to comply with the requirements of these covenants, if not waived or cured, could permit acceleration of the related debt. If any of our debt is accelerated, we cannot assure you that we would have sufficient assets to repay such debt or that we would be able to refinance such debt on commercially reasonable terms or at all. The acceleration of a significant portion of our current and future debt could have a material adverse effect on our business, financial condition, results of operations, or cash flows.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Disruptions in the financial markets, including the banking industry, and a general economic slowdown could cause us to be unable to obtain financing or receive customer payments and expose us to risks related to the overall macro-economic environment, which could have a material adverse effect on our business, financial condition, results of operations, or cash flows. </b>The United States equity and credit markets, as well as certain financial institutions, have experienced significant price volatility, dislocations, and liquidity disruptions, which have caused market prices of many equities to fluctuate substantially, the spreads on prospective debt financings to widen considerably, and disruptions in select banking transactions. These circumstances have materially impacted liquidity in the financial markets, making terms for certain financings less attractive, and in some cases have resulted in the unavailability of financing, even for companies who are otherwise qualified to obtain financing. These events may make it less likely that we will be able to obtain additional financing, may make it more difficult or prohibitively costly for us to raise capital through the issuance of debt or equity securities, which may prove necessary to execute our growth strategies, and may impact our customers and their ability to make payments or obtain credit.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Risks Related to Our Internal Control Over Financial Reporting</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>We have identified material weaknesses in internal control in prior years.</b> For the year ended December&#160;31, 2022, a material weakness in our internal control over financial reporting related to the implementation of our enterprise resource planning (&#8220;ERP&#8221;) system for the acquisition of ParkUSA was identified. A &#8220;material weakness&#8221; is a deficiency, or a combination of deficiencies, in internal control over financial reporting, such that there is a reasonable possibility that a material misstatement of our annual or interim consolidated financial statements would not be prevented or detected. This material weakness was remediated as of December&#160;31, 2023.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">No material weaknesses were identified as of December&#160;31, 2023. However, we cannot assure you that additional material weaknesses in our internal control over financial reporting will not be identified in the future. Any failure to maintain or implement required new or improved controls, or any difficulties we encounter in their implementation, could result in additional material weaknesses, or could result in material misstatements in our financial statements. These misstatements could result in a restatement of financial statements, cause us to fail to meet our reporting obligations or cause investors to lose confidence in our reported financial information, leading to a decline in our stock price.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Risks Related to Our Common Stock</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>The relatively low trading volume of our common stock may limit your ability to sell your shares. </b>Although our shares of common stock are listed on the Nasdaq Global Select Market, we have historically experienced a relatively low trading volume. If we have a low trading volume in the future, holders of our shares may have difficulty selling a large number of shares of our common stock in the manner or at a price that might otherwise be attainable.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>The market price of our common stock could be subject to significant fluctuations. </b>The market price of our common stock has experienced, and may continue to experience, significant volatility. Among the factors that could affect our stock price are:</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; margin-right: 0pt;">
   <tbody>
    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">our operating and financial performance and prospects;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">quarterly variations in the rate of growth of our financial indicators, such as earnings per share, net income, and net sales;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">changes in revenue or earnings estimates or publication of research reports by analysts;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">loss of any member of our senior management team;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">speculation in the press or investment community;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">strategic actions by us or our competitors, such as acquisitions or restructuring;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">sales of our common stock by shareholders;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">relatively low trading volume;</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#8226;</td>
     <td style="width: auto; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">our repurchase of our common stock pursuant to our share repurchase program;</td>
    </tr>

    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">general market conditions and market expectations for our industry and the financial health of our customers; and</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">domestic and international economic, legal, and regulatory factors unrelated to our performance.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      19
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">The stock markets in general have experienced broad fluctuations that have often been unrelated to the operating performance of particular companies. These broad market fluctuations may adversely affect the trading price of our common stock.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>We cannot guarantee that our share repurchase program of our common stock will be fully consummated or that it will enhance long-term stockholder value. Share repurchases could also increase the volatility of the trading price of our common stock and could diminish our cash reserves thereby impacting our ability to execute our growth strategy.</b> On November&#160;2, 2023, we announced our authorization of a share repurchase program of up to $30&#160;million of our outstanding common stock. The program does not commit to any particular timing or quantity of purchases, and the program may be suspended or discontinued at any time. During the year ended December&#160;31, 2023, we repurchased approximately 29,000&#160;shares of our common stock and had $29.2&#160;million remaining in share repurchase capacity as of December&#160;31, 2023. The actual timing and amount of repurchases remain subject to a variety of factors, including stock price, trading volume, market conditions and other general business considerations. We cannot guarantee that the program will be fully consummated or that it will enhance long-term stockholder value. The program could affect the trading price of our common stock and increase volatility, and any announcement of a termination of this program may result in a decrease in the trading price of our common stock.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Certain provisions of our governing documents and Oregon law could discourage potential acquisition proposals. </b>Our articles of incorporation contain provisions that:</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; margin-right: 0pt;">
   <tbody>
    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">classify the board of directors into three classes, each of which serves for a three-year term with one class elected each year;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td>
     <td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">provide that directors may be removed by shareholders only for cause and only upon the affirmative vote of 75% of the outstanding shares of common stock;</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#8226;</td>
     <td style="width: auto; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">permit the board of directors to issue preferred stock in one or more series, fix the number of shares constituting any such series, and determine the voting powers and all other rights and preferences of any such series, without any further vote or action by our shareholders; and</td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="width: 18pt; vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#8226;</td>
     <td style="width: auto; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">require the approval of holders of not less than 67% of our outstanding shares of common stock for any agreement of merger or consolidation which requires shareholder approval, or for the sale, lease, or exchange of all or substantially all of our property and assets.</td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In addition, we are subject to certain provisions of the Oregon Business Corporation Act that could discourage potential acquisition proposals, could deter, delay, or prevent a change in control that our shareholders consider favorable, and could depress the market value of our common stock. Additional information regarding the above described provisions of our governing documents and the Oregon Business Corporation Act is set forth in the &#8220;Description of Securities Registered Under Section&#160;12 of the Securities Exchange Act of 1934&#8221; filed as Exhibit&#160;4.2 to our 2019 Form&#160;10&#8209;K, which was filed with the SEC on March&#160;3, 2020.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item1b" title="item1b" href="#"></a>Item</b>&#160;<b>1B.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Unresolved Staff Comments</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">None.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item1c" title="item1c" href="#"></a>Item</b>&#160;<b>1C.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Cybersecurity</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">We believe that cybersecurity is a critical part of our overall risk management, which is supported by both our management and our Board of Directors. We believe that we face the same external threats common to other participants in the infrastructure sectors, which include ransomware and malware attacks in addition to the risks brought on by the vendor supply chain. Through the leadership of our Vice President of Information Technology, who reports to our Chief Financial Officer, we routinely assess these threats and evaluate our landscape for new vulnerabilities, considering both for their probability of occurrence as well as their perceived potential impact. We supplement our risk assessment processes with robust identification tools which we review routinely through the use of intrusion prevention and detection systems. We supplement our internal procedures with third parties, who routinely assess our network infrastructure for vulnerabilities both internal and external to our firewall. We also conduct periodic training and awareness programs for all of our employees with systems access in order to drive adoption and awareness of their critical roles in cybersecurity processes and controls.</p>
  <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      20
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The pace of change in approaches undertaken by cyber criminals requires an approach to security that strives for continuous improvement and constant monitoring of the landscape. While we are working to adopt the cybersecurity framework of the National Institute of Standards and Technology (NIST), we believe continued investment through parties external to our information technology team is the best means for extensively testing both the design and operational effectiveness of our cybersecurity controls, and ensuring their level of priority as compared to our other information technology objectives, namely system continuity and functionality.</p>
  <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">Furthermore, through our incident response plan, we believe we have a well-designed plan to manage through any unforeseen breach including the eradication of the infiltrator from our networks. We carry cyber insurance to transfer the residual risk of an incident. We also work with our cyber insurance carrier to regularly refine our response procedures, which include the definition of internal and external communications channels to key stakeholders, as well as the identification of material breaches and the associated incident reporting up to senior management and our Board of Directors.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">Our Board of Directors has charged the Audit Committee with the governance and oversight of this risk. Our governance philosophy is to discuss cybersecurity at least quarterly with our Audit Committee, as provided for within that committee&#8217;s charter, including regular reporting by our Vice President of Information Technology with respect to key accomplishments, planned activities, and monitoring results. Board experience in risk assessment has been enhanced with certification achievements specific to cybersecurity risk, providing us with the appropriate oversight to this evolving threat.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">As of the date of this report, we are not aware of any material breaches to our networks or computer systems that have materially affected or are reasonably likely to materially affect us, including the execution of our business strategy, results of operations, or financial condition. We describe potential risks from cybersecurity threats under the heading &#8220;Our information technology systems can be negatively affected by cybersecurity threats,&#8221; in Part&#160;I&#160;&#8212; Item&#160;1. &#8220;Risk Factors&#8221; of this 2023 Form&#160;10&#8209;K, which disclosures are incorporated herein by reference.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item2" title="item2" href="#"></a>Item</b>&#160;<b>2.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Properties</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our facilities serve regional markets, which vary in the number and sizes of projects year-over-year. Consequently, we have excess manufacturing capacity from time to time at each of our facilities. We believe the quality and productive capacity of our facilities are sufficient to maintain our competitive position for the foreseeable future.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following tables provide certain information about our operating facilities as of December&#160;31, 2023:</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Engineered Steel Pressure Pipe</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 100%; margin-left: 0pt; margin-right: 0pt;">
   <tbody>
    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Manufacturing Space</b></p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Property Size</b></p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Location</b></p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>(approx. sq. ft.)</b></p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>(approx. acres)</b></p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Ownership</b></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(204, 238, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Portland, Oregon</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">300,000</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">25</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Owned</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">San Luis R&#237;o Colorado, Mexico</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">285,000</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">105</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Owned</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(204, 238, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Adelanto, California</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">200,000</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">100</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Owned</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Parkersburg, West Virginia</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">170,000</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">90</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Owned</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(204, 238, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Saginaw, Texas (2 facilities)</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">170,000</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">50</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">1 Owned, 1 Leased</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Tracy, California</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">165,000</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">87</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Owned</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(204, 238, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">St. Louis, Missouri</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">100,000</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">20</p> </td>
     <td style="vertical-align: middle; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Leased</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Additionally, land adjacent to our Portland, Oregon, Saginaw, Texas, and St. Louis, Missouri facilities used for parking and/or pipe storage is leased.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      21
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Precast Infrastructure and Engineered Systems</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 100%; margin-left: 0pt; margin-right: 0pt;">
   <tbody>
    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Manufacturing Space</b></p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Property Size</b></p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Location</b></p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>(approx. sq. ft.)</b></p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>(approx. acres)</b></p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Ownership</b></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(204, 238, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Houston, Texas</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">239,000</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">25</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Leased</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Orem, Utah</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">150,000</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">20</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Leased</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(204, 238, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Dallas, Texas</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">62,000</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">11</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Leased</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Salt Lake City, Utah</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">58,000</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">20</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Leased</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(204, 238, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">San Antonio, Texas</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">34,000</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">7</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Leased</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; background-color: rgb(255, 255, 255);">
     <td style="vertical-align: middle; width: 44%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">St. George, Utah</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: right; margin: 0pt;">6,000</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 12%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">8</p> </td>
     <td style="vertical-align: bottom; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     <td style="vertical-align: middle; width: 28%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;">Leased</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item3" title="item3" href="#"></a>Item</b>&#160;<b>3.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Legal Proceedings</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We are party to a variety of legal actions arising out of the ordinary course of business. Plaintiffs occasionally seek punitive or exemplary damages. We do not believe that such normal and routine litigation will have a material impact on our consolidated financial results. We are also involved in other kinds of legal actions, some of which assert or may assert claims or seek to impose fines, penalties, and other costs in substantial amounts. See Note&#160;15 of the Notes to Consolidated Financial Statements in Part&#160;II&#160;&#8212; Item&#160;8. &#8220;Financial Statements and Supplementary Data&#8221; of this 2023 Form&#160;10&#8209;K.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item4" title="item4" href="#"></a>Item</b>&#160;<b>4.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Mine Safety Disclosures</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Not applicable.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div>
   &#160;
  </div>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="part2" title="part2" href="#"></a>PART</b>&#160;<b>II</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><a id="item5" title="item5" href="#"></a>Item</b>&#160;<b>5.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Market for Registrant</b>&#8217;<b>s Common Equity, Related Stockholder Matters and Issuer Purchases of Equity Securities</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Market Information</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our common stock is quoted on the Nasdaq Global Select Market under the symbol &#8220;NWPX.&#8221;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Holders</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">There were 18&#160;shareholders of record as of February 23, 2024. A substantially greater number of holders of our common stock are beneficial holders, whose shares are held of record by banks, brokers, and other financial institutions.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Dividends</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We do not intend to pay cash dividends in the foreseeable future.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Securities Authorized for Issuance under Equity Compensation Plans</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The information with respect to equity compensation plans is included under Part&#160;III&#160;&#8212; Item&#160;12. &#8220;Security Ownership of Certain Beneficial Owners and Management and Related Stockholder Matters&#8221; of this 2023 Form&#160;10&#8209;K.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      22
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Performance Graph</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following graph compares the performance of our common stock to the performance of the Russell 2000 Index and a weighted composite of certain industry-based peer companies (&#8220;Peer Group&#8221;) selected by us. The Russell 2000 Index measures the performance of the small-cap segment of the U.S. equity markets. The Peer Group is comprised of Ampco-Pittsburgh Corporation, Badger Meter, Inc., DMC Global Inc., L.B. Foster Company, Insteel Industries, Inc., Lindsay Corporation, Luxfer Holdings, PLC, Mueller Water Products, Inc., NN, Inc., and Orion Group Holdings, Inc. The comparisons in the chart below are provided in response to SEC disclosure requirements and, therefore, are not intended to forecast or be indicative of future performance of our common stock.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div style="text-align: center;">
   <img alt="a01.jpg" src="a01.jpg"/></div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;">
   <tbody>
    <tr class="finHeading" style="vertical-align: bottom;">
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="10" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Indexed Return</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr class="finHeading" style="vertical-align: bottom;">
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Northwest Pipe Company</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Russell 2000 Index</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Peer Group</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 55%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">December 31, 2018</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">100.00</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">100.00</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">100.00</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">December 31, 2019</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">143.02</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">125.52</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">121.70</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">December 31, 2020</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">121.51</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">150.58</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">141.95</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">December 31, 2021</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">136.54</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">172.90</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">163.56</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">December 31, 2022</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">144.70</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">137.56</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">142.04</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">December 31, 2023</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">129.93</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">160.85</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">177.59</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      23
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Recent Sales of Unregistered Securities</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">There were no unregistered sales of our equity securities during the year ended December&#160;31, 2023.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Use of Proceeds from Registered Securities</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On December&#160;4, 2023, our shelf registration statement on Form&#160;S&#8209;3 (Registration No.&#160;333&#8209;275691) covering the potential future sale of up to $150&#160;million of our equity and/or debt securities or combinations thereof, was declared effective by the SEC. This shelf registration statement, which replaced the registration statement on Form&#160;S&#8209;3 that expired on November&#160;3, 2023, provides another potential source of capital, in addition to other alternatives already in place. We cannot be certain that funding will be available on favorable terms or available at all. To the extent that we raise additional funds by issuing equity securities, our shareholders may experience significant dilution. As of the date of this 2023 Form&#160;10&#8209;K, we have not yet sold any securities under this registration statement, nor do we have an obligation to do so. Please refer to the factors discussed in Part&#160;I&#160;&#8212; Item&#160;1A. &#8220;Risk Factors&#8221; of this 2023 Form&#160;10&#8209;K.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On September&#160;2, 2022, we entered into an Open Market Sale Agreement (the &#8220;At-the-Market Offering&#8221;) with Jefferies LLC (&#8220;Jefferies&#8221;) which provided for the issuance and sale of shares of our common stock, par value $0.01 per share, having aggregate offering sales proceeds of up to $50&#160;million from time to time through Jefferies as our sales agent. On October&#160;30, 2023, we provided written notice terminating the Open Market Sale Agreement in accordance with its terms. No proceeds were raised under the At-the-Market Offering during the years ended December&#160;31, 2023 or 2022.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Purchases of Equity Securities by the Issuer and Affiliated Purchasers</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On November&#160;2, 2023, we announced our authorization of a share repurchase program of up to $30&#160;million of our outstanding common stock. The program does not commit to any particular timing or quantity of purchases, and the program may be suspended or discontinued at any time. Under the program, shares may be purchased in open market, including through Rule&#160;10b5&#8209;1 of the Exchange Act, or in privately negotiated transactions administered by our broker, D.A. Davidson Companies. At this time, we have elected to limit our share repurchase transactions to only those under the Rule&#160;10b5&#8209;1 trading plan we executed in November 2023, which we believe considers our liquidity, including availability of borrowings and covenant compliance under our Amended Credit Agreement, and other capital allocation priorities of the business. Our Rule&#160;10b5&#8209;1 trading plan designates up to $10&#160;million for repurchases and provides for daily share repurchases that fluctuate with changes in the trading price of our common stock. We expect to consider share repurchase strategies beyond the current Rule&#160;10b5&#8209;1 trading plan at a future date.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table provides information relating to our repurchase of common stock during the three months ended December&#160;31, 2023 pursuant to our share repurchase program.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;">
   <tbody>
    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 40%; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Period</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Total Number of Shares Purchased</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Average Price Paid Per Share (1)</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Total Number of Shares Purchased as Part of Publicly Announced Plans or Programs</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Approximate Dollar Value of Shares That May Yet Be Purchased Under the Plans or Programs</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 40%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 12%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 12%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 12%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
     <td style="width: 12%;">&#160;</td>
     <td style="width: 1%;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">October 1, 2023 to October 31, 2023</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">November 1, 2023 to November 30, 2023</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">30,000,000</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">December 1, 2023 to December 31, 2023</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">28,616</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">29.20</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">28,616</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">29,164,382</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">28,616</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">28,616</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#160;</td>
     <td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">(1)</p> </td>
     <td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Exclusive of commission fees incurred in relation to the repurchase of common stock.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item6" title="item6" href="#"></a>Item</b>&#160;<b>6.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>[Reserved]</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      24
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item7" title="item7" href="#"></a>Item</b>&#160;<b>7.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Management</b>&#8217;<b>s Discussion and Analysis of Financial Condition and Results of Operations</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following is management&#8217;s discussion and analysis of certain significant factors that have affected our consolidated financial condition and results of operations during the periods included herein. This discussion should be read in conjunction with our historical Consolidated Financial Statements and Notes to Consolidated Financial Statements in Part&#160;II&#160;&#8212; Item&#160;8. &#8220;Financial Statements and Supplementary Data&#8221; of this 2023 Form&#160;10&#8209;K. This discussion contains forward-looking statements based upon current expectations that involve risks and uncertainties. Our actual results may differ materially from those anticipated in these forward-looking statements as a result of various factors, including those set forth under Part&#160;I&#160;&#8212; Item&#160;1A. &#8220;Risk Factors&#8221; or in other parts of this 2023 Form&#160;10&#8209;K. For discussion related to the results of operations and changes in financial condition for the year ended December&#160;31, 2022 compared to the year ended December&#160;31, 2021 refer to Part&#160;II&#160;&#8212; Item&#160;7. &#8220;Management&#8217;s Discussion and Analysis of Financial Condition and Results of Operations&#160;&#8212; Year Ended December&#160;31, 2022 Compared to Year Ended December&#160;31, 2021&#8221; and &#8220;Liquidity and Capital Resources&#8221; in our 2022 Form&#160;10&#8209;K, which was filed with the SEC on March&#160;16, 2023, and which is incorporated herein by reference.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Overview</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Northwest Pipe Company is a leading manufacturer of water-related infrastructure products, and operates in two segments, Engineered Steel Pressure Pipe (SPP) and Precast Infrastructure and Engineered Systems (Precast). For detailed descriptions of these segments, see the &#8220;Our Segments&#8221; discussion in Part&#160;I&#160;&#8212; Item&#160;1. &#8220;Business&#8221; of this 2023 Form&#160;10&#8209;K.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In addition to being the largest manufacturer of engineered steel water pipeline systems in North America, we manufacture stormwater and wastewater technology products; high-quality precast and reinforced concrete products; pump lift stations; steel casing pipe, bar-wrapped concrete cylinder pipe, and one of the largest offerings of pipeline system joints, fittings, and specialized components. Strategically positioned to meet growing water and wastewater infrastructure needs, we provide solution-based products for a wide range of markets under the ParkUSA, Geneva Pipe and Precast, Permalok&#174;, and Northwest Pipe Company lines. Our diverse team is committed to safety, quality, and innovation while demonstrating our core values of accountability, commitment, and teamwork. We are headquartered in Vancouver, Washington, and have 13&#160;manufacturing facilities across North America.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our water infrastructure products are sold generally to installation contractors, who include our products in their bids to federal, state, and municipal agencies, privately-owned water companies, or developers for specific projects. We believe our sales are substantially driven by spending on urban growth and new water infrastructure with a recent trend towards spending on water infrastructure replacement, repair, and upgrade. Within the total range of products, our steel pipe best addresses the larger-diameter, higher-pressure pipeline applications, while our precast concrete products mainly serve stormwater and sanitary sewer systems.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Our Current Economic Environment</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Demand for our Precast products is generally influenced by general economic conditions such as housing starts, population growth, interest rates, and rates of inflation. According to the United States Census Bureau, privately-owned housing starts were at a seasonally adjusted annual rate of 1.5&#160;million in December 2023 and 1.4&#160;million in December 2022, and the population of the United States is expected to increase by approximately 2&#160;million people in 2024. Additionally, it is now believed that recent increases in the federal funds rate by the Federal Reserve will remain elevated for the medium-term which is expected to temper demand for housing. The impacts from the strain on the housing market to this point have been muted by the impacts of recent labor and commodity shortages currently limiting the supply of new homes.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our SPP projects are often planned for many years in advance, as we operate that business with a long-term time horizon for which the projects are sometimes part of 50 year build-out plans. Even though we experienced a relatively modest level of project bidding in 2023, our backlog for SPP has remained elevated, and long-term demand for water infrastructure projects in the United States appears strong. Additionally, while our SPP business faces possible head winds from recessionary concerns in the broader domestic economy, we currently believe it more likely a modest increase in funding will be brought on by the Bipartisan Infrastructure Deal (Infrastructure Investment and Jobs Act) and the Inflation Reduction Act.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Purchased steel typically represents approximately 35% of cost of sales, and higher steel costs generally result in higher selling prices and revenue; however, volatile fluctuations in steel markets can affect our business. SPP contracts are generally quoted on a fixed-price basis, and volatile steel markets can result in selling prices that no longer correlate to the cost available at the time of steel purchase. Even though steel market prices at the end of 2023 were approximately 50% higher than where they began the year, 2023 was tempered compared to the previous two years, and supplier lead times were not as challenging to manage. Our average price of purchased steel was $994 per ton in 2023, compared to $1,174 in 2022 and $1,291 in 2021.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      25
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">Economic uncertainty, including the impacts of raw material shortages, inflationary pressures, potential risks of a recession, and disruptions in the financial markets could have an adverse effect on our business. The extent of the impact of these broader economic forces on our business will depend on future developments, which cannot be predicted.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Results of Operations</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table sets forth, for the periods indicated, certain financial information regarding costs and expenses expressed in dollars (in thousands) and as a percentage of total net sales.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;">
   <tbody>
    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Year Ended December 31, 2023</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Year Ended December 31, 2022</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Year Ended December 31, 2021</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>$</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>% of Net Sales</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>$</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>% of Net Sales</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>$</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>% of Net Sales</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 28%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net sales:</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">296,381</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">66.7</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">307,572</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">67.2</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">259,823</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">78.0</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Precast Infrastructure and Engineered Systems</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">147,974</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">33.3</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">150,093</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">32.8</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">73,490</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">22.0</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total net sales</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">444,355</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">100.0</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">457,665</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">100.0</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">333,313</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">100.0</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Cost of sales:</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">253,954</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">57.2</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">263,099</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">57.5</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">228,542</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">68.6</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Precast Infrastructure and Engineered Systems</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">112,759</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">25.3</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">108,711</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">23.7</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">60,517</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">18.1</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total cost of sales</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">366,713</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">82.5</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">371,810</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">81.2</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">289,059</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">86.7</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Gross profit:</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">42,427</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9.5</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">44,473</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9.7</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">31,281</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9.4</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Precast Infrastructure and Engineered Systems</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">35,215</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8.0</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">41,382</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9.1</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,973</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3.9</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total gross profit</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">77,642</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">17.5</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">85,855</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">18.8</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">44,254</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">13.3</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Selling, general, and administrative expense</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">43,784</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9.9</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">41,034</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9.0</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">28,222</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8.5</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Operating income</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">33,858</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">7.6</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">44,821</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9.8</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">16,032</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">4.8</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Other income</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">276</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">0.1</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">97</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">328</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">0.1</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Interest expense</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(4,855</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1.1</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(3,568</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(0.8</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,202</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(0.4</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Income before income taxes</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">29,279</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">6.6</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">41,350</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9.0</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">15,158</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">4.5</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Income tax expense</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,207</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1.8</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">10,201</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2.2</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,635</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1.0</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Net income</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">21,072</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4.8</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,149</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">6.8</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">11,523</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     <td style="width: 9%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3.5</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Year Ended December&#160;31, 2023 Compared to Year Ended December&#160;31, 2022</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Net sales. </i></b>Net sales decreased 2.9% to $444.4&#160;million in 2023 compared to $457.7&#160;million in 2022.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">SPP net sales decreased 3.6% to $296.4&#160;million in 2023 compared to $307.6&#160;million in 2022 driven by a 6% decrease&#160;in tons produced resulting primarily from changes in project timing, partially offset by a 2% increase&#160;in selling price per ton primarily due to product mix. Bidding activity, backlog, and production levels may vary significantly from period to period affecting sales volumes.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Precast net sales decreased 1.4% to $148.0&#160;million in 2023 compared to $150.1&#160;million in 2022 driven by a 3% decrease in selling prices due to decreased demand, partially offset by a 2% increase in volume shipped primarily due to product mix.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Gross profit. </i></b>Gross profit decreased 9.6% to $77.6&#160;million (17.5% of net sales) in 2023 compared to $85.9&#160;million (18.8% of net sales) in 2022.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">SPP gross profit decreased 4.6% to $42.4&#160;million (14.3% of SPP net sales) in 2023 compared to $44.5&#160;million (14.5% of SPP net sales) in 2022 primarily due to changes in production volume.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Precast gross profit decreased 14.9% to $35.2&#160;million (23.8% of Precast net sales) in 2023 compared to $41.4&#160;million (27.6% of Precast net sales) in 2022 primarily due to decreased demand.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      26
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Selling, general, and administrative expense. </i></b>Selling, general, and administrative expense increased 6.7% to $43.8&#160;million (9.9% of net sales) in 2023 compared to $41.0&#160;million (9.0% of net sales) in 2022 primarily due to $1.7&#160;million in higher professional fees including ERP implementation costs.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Income taxes. </i></b>Income tax expense was $8.2&#160;million in 2023 (an effective income tax rate of 28.0%) compared to $10.2&#160;million in 2022 (an effective income tax rate of 24.7%). The effective income tax rate for 2023 was primarily impacted by non-deductible permanent differences, accrued interest on uncertain income tax positions, and state franchise tax. The effective income tax rate for 2022 was primarily impacted by non-deductible permanent differences. The effective income tax rate can change significantly depending on the relationship of permanent income tax deductions and tax credits to estimated pre-tax income or loss and the changes in valuation allowances. Accordingly, the comparison of effective income tax rates between periods is not meaningful in all situations.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Liquidity and Capital Resources</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Sources and Uses of Cash</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our principal sources of liquidity generally include operating cash flows and the Amended Credit Agreement. From time to time our long-term capital needs may be met through the issuance of additional debt or equity. Our principal uses of liquidity generally include capital expenditures, working capital, organic growth initiatives, acquisitions, share repurchases, and debt service. Information regarding our cash flows for the years ended December&#160;31, 2023, 2022, and 2021 are presented in our Consolidated Statements of Cash Flows contained in Part&#160;II&#160;&#8212; Item&#160;8. &#8220;Financial Statements and Supplementary Data&#8221; of this 2023 Form&#160;10&#8209;K, and are further discussed below.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of December&#160;31, 2023, our working capital (current assets minus current liabilities) was $176.3&#160;million compared to $187.9&#160;million as of December&#160;31, 2022. Cash and cash equivalents totaled $4.1&#160;million and $3.7&#160;million as of December&#160;31, 2023 and 2022, respectively.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Fluctuations in SPP working capital accounts result from timing differences between production, shipment, invoicing, and collection, as well as changes in levels of production and costs of materials. We typically have a relatively large investment in working capital, as we generally pay for materials, labor, and other production costs in the initial stages of a project, while payments from our customers are generally received after finished product is delivered. A portion of our revenues are recognized over time as the manufacturing process progresses; therefore, cash receipts typically occur subsequent to when revenue is recognized and the elapsed time between when revenue is recorded and when cash is received can be significant. As such, our payment cycle is a significantly shorter interval than our collection cycle, although the effect of this difference in the cycles may vary by project, and from period to period.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of December&#160;31, 2023, we had $54.5&#160;million of outstanding revolving loan borrowings, $10.8&#160;million of outstanding current debt, $90.2&#160;million of operating lease liabilities, and $7.5&#160;million of finance lease liabilities. As of December&#160;31, 2022, we had $83.7&#160;million of outstanding revolving loan borrowings, $10.8&#160;million of outstanding current debt, $94.2&#160;million of operating lease liabilities, and $3.0&#160;million of finance lease liabilities. For future maturities of these obligations, see Notes&#160;7, 8, and 9 of the Notes to Consolidated Financial Statements in Part&#160;II&#160;&#8212; Item&#160;8. &#8220;Financial Statements and Supplementary Data&#8221; of this 2023 Form&#160;10&#8209;K.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Due to the uncertainty with respect to the timing of future cash flows associated with our approximately $4.7&#160;million in unrecognized tax benefits as of December&#160;31, 2023, we are unable to make reasonably reliable estimates of the period of cash settlement with the respective taxing authorities. For further information, see Note&#160;17 of the Notes to Consolidated Financial Statements in Part&#160;II&#160;&#8212; Item&#160;8. &#8220;Financial Statements and Supplementary Data&#8221; of this 2023 Form&#160;10&#8209;K.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Net Cash Provided by Operating Activities</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Net cash provided by operating activities was $53.5&#160;million in 2023 compared to $17.5&#160;million in 2022. Net income, adjusted for non-cash items, provided $41.5&#160;million of operating cash flow in 2023 compared to $52.2&#160;million of operating cash flow in 2022. The net change in working capital provided (used) $12.0&#160;million of operating cash flow in 2023 compared to ($34.6)&#160;million of operating cash flow in 2022.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      27
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><i>Net Cash Used in Investing Activities</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Net cash used in investing activities was $20.4&#160;million in 2023 compared to $23.1&#160;million in 2022. Capital expenditures were $18.3&#160;million in 2023 compared to $22.8&#160;million in 2022, which includes $2.8&#160;million in 2023 and $10.1&#160;million in 2022 of investment in our new reinforced concrete pipe mill, and the remainder primarily for standard capital replacement. We currently expect capital expenditures in 2024 to be approximately $19&#160;million to $22&#160;million, which includes approximately $2&#160;million of investment in our new reinforced concrete pipe mill, and associated ancillary equipment, approximately $5&#160;million for the construction of a building at our Salt Lake City, Utah facility for the new mill, and the remainder primarily for standard capital replacement.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><i>Net Cash Provided by (Used in) Financing Activities</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Net cash provided by (used in) financing activities was ($32.7)&#160;million in 2023 compared to $6.2&#160;million in 2022. Net repayments on the line of credit were $29.2&#160;million in 2023 compared to $3.1&#160;million in 2022. Net borrowings on other debt were $0 in 2023 compared to $10.8&#160;million in 2022.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We anticipate that our existing cash and cash equivalents, cash flows expected to be generated by operations, and additional borrowing capacity under the Amended Credit Agreement and other loans will be adequate to fund our working capital, debt service, capital expenditure requirements, and share repurchases for the foreseeable future. To the extent necessary, we may also satisfy capital requirements through additional bank borrowings, senior notes, term notes, subordinated debt, and finance and operating leases, if such resources are available on satisfactory terms. We have from time to time evaluated and continue to evaluate opportunities for acquisitions and expansion. Any such transactions, if consummated, may necessitate additional bank borrowings or other sources of funding.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On December&#160;4, 2023, our shelf registration statement on Form&#160;S&#8209;3 (Registration No.&#160;333&#8209;275691) covering the potential future sale of up to $150&#160;million of our equity and/or debt securities or combinations thereof, was declared effective by the SEC. This shelf registration statement, which replaced the registration statement on Form&#160;S&#8209;3 that expired on November&#160;3, 2023, provides another potential source of capital, in addition to other alternatives already in place. We cannot be certain that funding will be available on favorable terms or available at all. To the extent that we raise additional funds by issuing equity securities, our shareholders may experience significant dilution. As of the date of this 2023 Form&#160;10&#8209;K, we have not yet sold any securities under this registration statement, nor do we have an obligation to do so. Please refer to the factors discussed in Part&#160;I&#160;&#8212; Item&#160;1A. &#8220;Risk Factors&#8221; of this 2023 Form&#160;10&#8209;K.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On September&#160;2, 2022, we entered into the At-the-Market Offering with Jefferies which provided for the issuance and sale of shares of our common stock, par value $0.01 per share, having aggregate offering sales proceeds of up to $50&#160;million from time to time through Jefferies as our sales agent. On October&#160;30, 2023, we provided written notice terminating the Open Market Sale Agreement in accordance with its terms. No proceeds were raised under the At-the-Market Offering during the year ended December&#160;31, 2023.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On November&#160;2, 2023, we announced our authorization of a share repurchase program of up to $30&#160;million of our outstanding common stock. The program does not commit to any particular timing or quantity of purchases, and the program may be suspended or discontinued at any time. Under the program, shares may be purchased in open market, including through Rule&#160;10b5&#8209;1 of the Exchange Act, or in privately negotiated transactions administered by our broker, D.A. Davidson Companies. At this time, we have elected to limit our share repurchase transactions to only those under the Rule&#160;10b5&#8209;1 trading plan we executed in November 2023, which we believe considers our liquidity, including availability of borrowings and covenant compliance under our Amended Credit Agreement, and other capital allocation priorities of the business. Our Rule&#160;10b5&#8209;1 trading plan designates up to $10&#160;million for repurchases and provides for daily share repurchases that fluctuate with changes in the trading price of our common stock. We expect to consider share repurchase strategies beyond the current Rule&#160;10b5&#8209;1 trading plan at a future date. For a summary of shares repurchased during the fourth quarter of 2023, see &#8220;Purchases of Equity Securities by the Issuer and Affiliated Purchasers&#8221; in Part&#160;II&#160;&#8212; Item&#160;5. &#8220;Market for Registrant&#8217;s Common Equity, Related Stockholder Matters and Issuer Purchases of Equity Securities&#8221; of this 2023 Form&#160;10&#8209;K. Please refer to the factors discussed in Part&#160;I&#160;&#8212; Item&#160;1A. &#8220;Risk Factors&#8221; of this 2023 Form&#160;10&#8209;K.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      28
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Credit Agreement</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Amended Credit Agreement provides for a revolving loan, swingline loan, and letters of credit in the aggregate amount of up to $125&#160;million, with an option for us to increase that amount by $50&#160;million, subject to provisions of the Amended Credit Agreement. The Amended Credit Agreement will expire, and all obligations outstanding will mature, on June&#160;29, 2028. We may prepay outstanding amounts at our discretion without penalty at any time, subject to applicable notice requirements. As of December&#160;31, 2023 under the Amended Credit Agreement, we had $54.5&#160;million of outstanding revolving loan borrowings, $1.1&#160;million of outstanding letters of credit, and additional borrowing capacity of approximately $69&#160;million.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Revolving loans under the Amended Credit Agreement bear interest at rates related to, at our option and subject to the provisions of the Amended Credit Agreement, either: (i)&#160;Base Rate (as defined in the Amended Credit Agreement) plus the Applicable Margin; (ii)&#160;Adjusted Term Secured Overnight Finance Rate (&#8220;SOFR&#8221;) (as defined in the Amended Credit Agreement) plus the Applicable Margin; or (iii)&#160;Adjusted Daily Simple SOFR (as defined in the Amended Credit Agreement) plus the Applicable Margin. The &#8220;Applicable Margin&#8221; is 1.75% to 2.35%, depending on our Consolidated Senior Leverage Ratio (as defined in the Amended Credit Agreement) and the interest rate option chosen. Interest on outstanding revolving loans is payable monthly. Swingline loans under the Amended Credit Agreement bear interest at the Base Rate plus the Applicable Margin. The Amended Credit Agreement requires the payment of a commitment fee of between 0.30% and 0.40%, based on the amount by which the Revolver Commitment exceeds the average daily balance of outstanding borrowings (as defined in the Amended Credit Agreement). Such fee is payable monthly in arrears. We are also obligated to pay additional fees customary for credit facilities of this size and type.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The letters of credit outstanding as of December&#160;31, 2023 relate to workers&#8217; compensation insurance. Based on the nature of these arrangements and our historical experience, we do not expect to make any material payments under these arrangements.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Amended Credit Agreement contains customary representations and warranties, as well as customary affirmative and negative covenants, events of default, and indemnification provisions in favor of the Lenders. The negative covenants include restrictions regarding the incurrence of liens and indebtedness, annual capital expenditures, certain investments, acquisitions, and dispositions, and other matters, all subject to certain exceptions. The Amended Credit Agreement requires us to regularly provide financial information to Wells Fargo and to maintain a consolidated senior leverage ratio no greater than 3.00&#160;to 1.00 (subject to certain exceptions) and a minimum consolidated earnings before interest, taxes, depreciation, and amortization (&#8220;EBITDA&#8221;) (as defined in the Amended Credit Agreement) of at least $35&#160;million for the four consecutive fiscal quarters most recently ended. Pursuant to the Amended Credit Agreement, we have also agreed that we will not sell, assign, or otherwise dispose or encumber, any of our owned real property. The occurrence of an event of default could result in the acceleration of the obligations under the Amended Credit Agreement. We were in compliance with our financial covenants as of December&#160;31, 2023, and expect to continue to be in compliance in the near term.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our obligations under the Amended Credit Agreement are secured by a senior security interest in substantially all of our and our subsidiaries&#8217; assets.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Current Debt</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Interim Funding Agreement dated August&#160;2, 2022 with Wells Fargo Equipment Finance, Inc. (&#8220;WFEF&#8221;), as amended January&#160;23, 2023, March&#160;15, 2023, July&#160;21, 2023, and November&#160;2, 2023 (together, the &#8220;IFA&#8221;), provides for aggregate interim funding advances up to $10.8&#160;million of equipment purchased for a new reinforced concrete pipe mill, to be converted into a term loan upon final delivery and acceptance of the financed equipment. As of December&#160;31, 2023, the outstanding balance of the IFA was $10.8&#160;million, which was classified as a current liability since there was not a firm commitment for long-term debt financing. The IFA bore interest at the Term SOFR&#160;plus 1.75% as of December&#160;31, 2022. Effective November&#160;2, 2023, the IFA bears interest at the SOFR Average plus 2.00%. As of December&#160;31, 2023 and 2022, the weighted-average interest rate for outstanding borrowings was 7.08% and 5.87%, respectively. The IFA requires monthly payments of accrued interest and grants a security interest in the equipment to WFEF. Effective November 2, 2023, the IFA requires us to maintain a consolidated senior leverage ratio no greater than 3.00 to 1.00 (subject to certain exceptions) and to maintain a minimum consolidated EBITDA&#160;(as defined in the IFA) of at least $35&#160;million for the four consecutive fiscal quarters most recently ended. We were in compliance with our financial covenants as of December&#160;31, 2023,&#160;and expect to continue to be in compliance in the near term.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Recent Accounting Pronouncements</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">For a description of recent accounting pronouncements affecting our company, including the dates of adoption and estimated effects on financial position, results of operations, and cash flows, see Note&#160;2 of the Notes to Consolidated Financial Statements in Part&#160;II&#160;&#8212; Item&#160;8. &#8220;Financial Statements and Supplementary Data&#8221; of this 2023 Form&#160;10&#8209;K.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      29
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Critical Accounting Estimates</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><i><b>Management Estimates</b></i></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The preparation of our Consolidated Financial Statements requires us to make estimates and judgments that affect the reported amounts of assets, liabilities, revenues, and expenses, and disclosure of contingent assets and liabilities. We base our estimates on historical experience and on various other assumptions that are believed to be reasonable under the circumstances. On an ongoing basis, we evaluate all of our estimates including those related to revenue recognition, goodwill, income taxes, and litigation and other contingencies. Actual results may differ from these estimates under different assumptions or conditions. We believe the following critical accounting policies and related judgments and estimates affect the preparation of our Consolidated Financial Statements.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><i>Revenue Recognition</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">SPP revenue for water infrastructure steel pipe products is recognized over time as the manufacturing process progresses because of our right to payment for work performed to date plus a reasonable profit on cancellations for unique products that have no alternative use to us. Revenue is measured by the costs incurred to date relative to the estimated total direct costs to fulfill each contract (cost-to-cost method). Contract costs include all material, labor, and other direct costs incurred in satisfying performance obligations. The cost of steel material is recognized as a contract cost when the steel is introduced into the manufacturing process. Estimated total costs of each contract require judgment and are reviewed on a monthly basis by project management and operations personnel for all active projects. All cost revisions that result in a material change in gross profit are reviewed by senior management personnel. Significant judgment is required in estimating total costs which primarily include labor costs and productivity, and cost and availability of materials, and which could be influenced by inflationary trends, supplier performance, or asset utilization, amongst other factors. We use certain assumptions and develop estimates based on a number of considerations, including the degree of required product customization, our historical experience, the project plans, and an assessment of the risks and uncertainties inherent in the contract related to implementation delays or performance issues that may or may not be within our control. Changes in job performance, job conditions, and estimated profitability, including those arising from contract change orders, contract penalty provisions, foreign currency exchange rate movements, changes in raw materials costs, and final contract settlements may result in revisions to estimates of revenue, costs, and income, and are recognized in the period in which the revisions are determined. Provisions for losses on uncompleted contracts are estimated by comparing total estimated contract revenue to the total estimated contract costs and a loss is recognized during the period in which it becomes probable and can be reasonably estimated.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Precast revenue for water infrastructure concrete pipe and precast concrete products is recognized at the time control is transferred to customers, in an amount that reflects the consideration we expect to be entitled to in exchange for the products. All variable consideration that may affect the total transaction price, including contractual discounts, returns, and credits, is included in net sales. Estimates for variable consideration are based on historical experience, anticipated performance, and management&#8217;s judgment. Our contracts do not contain significant financing.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We generally do not recognize revenue on a contract until the contract has approval and commitment from both parties, the contract rights and payment terms can be identified, the contract has commercial substance, and its collectability is probable.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Goodwill</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Goodwill is reviewed for impairment annually, or whenever events occur or circumstances change that indicate goodwill may be impaired. Goodwill is tested for impairment at the reporting unit level. A reporting unit is an operating segment or one level below an operating segment (also known as a component). During the fourth quarter of 2022, we changed the date of our annual impairment test of goodwill from December&#160;31 to November&#160;30. The change in the impairment test date lessens resource constraints that exist in connection with our year-end close and financial reporting process and provides for additional time to complete the required impairment testing. This change did not represent a material change to our method of applying an accounting principle, and therefore does not delay, accelerate, or avoid an impairment charge.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In testing goodwill for impairment, we have the option to perform a qualitative assessment to determine whether the existence of events or circumstances indicate that it is more-likely-than-not (more than 50%) that the fair value of a reporting unit is less than its carrying amount. When performing a qualitative assessment, we evaluate factors such as industry and market conditions, cost factors, overall financial performance, and other relevant entity specific events and changes. In the evaluation, we also look at the long-term prospects for the reporting unit, which requires considerable management judgment.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      30
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">If the qualitative assessment indicates that it is more-likely-than-not that the fair value of the reporting unit is less than its carrying amount, or if we choose not to perform the qualitative assessment, then a quantitative assessment is performed to determine the reporting unit&#8217;s fair value. The fair value calculation uses a combination of income and market approaches. The income approach is based upon projected future after-tax cash flows discounted to present value using factors that consider the timing and risk associated with the future after-tax cash flows. The market approach is based upon historical and/or forward-looking measures using multiples of revenue or earnings before interest, tax, depreciation, and amortization. We utilize a weighted average of the income and market approaches. If the reporting unit&#8217;s carrying value exceeds its fair value, then an impairment loss is recognized for the amount of the excess of the carrying amount over the reporting unit&#8217;s fair value, not to exceed the total amount of goodwill allocated to the reporting unit. Fair value determinations require considerable judgment and are sensitive to changes in underlying estimates, assumptions, and market factors, and future changes in any of these could result in different fair value determinations in the future.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><i>Income Taxes</i></b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Income taxes are recorded using an asset and liability approach that requires the recognition of deferred income tax assets and liabilities for the expected future tax consequences of events that have been recognized in our Consolidated Financial Statements or income tax returns. Valuation allowances are established when necessary to reduce deferred income tax assets to the amount expected to be realized. The determination of our provision for income taxes requires significant judgment, the use of estimates, and the interpretation and application of complex tax laws. Our provision for income taxes primarily reflects a combination of income earned and taxed in the various United States federal, state, local, and to a lesser extent, foreign jurisdictions. Jurisdictional tax law changes, increases or decreases in permanent differences between book and tax items, accruals or adjustments of accruals for unrecognized income tax benefits or valuation allowances, and our change in the mix of earnings from these taxing jurisdictions all affect the overall effective income tax rate.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We record income tax reserves for federal, state, local, and international exposures relating to periods subject to audit. The development of reserves for these exposures requires judgments about tax issues, potential outcomes and timing, and is a subjective estimate. We assess our income tax positions and record income tax benefits for all years subject to examination based upon management&#8217;s evaluation of the facts, circumstances, and information available at the reporting dates. For those income tax positions where it is more-likely-than-not that an income tax benefit will be sustained, we have recorded the largest amount of income tax benefit with a greater than 50% likelihood of being realized upon settlement with a tax authority that has full knowledge of all relevant information. For those income tax positions where it is not more-likely-than-not that an income tax benefit will be sustained, no income tax benefit has been recognized in the Consolidated Financial Statements.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item7a" title="item7a" href="#"></a>Item</b>&#160;<b>7A.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Quantitative and Qualitative Disclosures About Market Risk</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The primary market risks affecting our business relate to our exposure to commodity risk, interest rate risk, and foreign currency exchange rate risk.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Commodity Risk</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Certain materials we use in our business are classified as commodities traded in the worldwide markets, of which the most significant commodity is steel, used in the manufacturing of pipe. We do not hedge our commodity risk and do not enter into any transactions in commodities for trading purposes. The impact of volatility in steel prices varies significantly. This volatility can significantly affect our gross profit. Although we seek to recover increases in steel prices through price increases in our products, we have not always been successful.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Steel typically makes up approximately 35% of SPP&#8217;s project costs. As this raw material represents a substantial portion of our cost of sales, we attempt to minimize our risk exposure to steel price volatility by submitting bids based on general assumptions of the expected price of steel when we will receive a purchase order or contract, which is typically awarded within 30&#160;to 90 days of the bid date, as well as ordering steel as soon as possible after a project is contracted.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      31
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Interest Rate Risk</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our debt bears interest at both fixed and variable rates. As of December&#160;31, 2023 and 2022, we had $65.2&#160;million and $94.5&#160;million, respectively, of variable-rate debt outstanding. We have managed a portion of our variable-rate debt with interest rate swap agreements to effectively convert a portion of our variable-rate debt to fixed-rate debt. The principal objective of these contracts is to reduce the variability of the cash flows in interest payments associated with a portion of our variable-rate debt, thus reducing the impact of interest rate changes on future interest payment cash flows. We have elected to apply the hedge accounting rules in accordance with authoritative guidance for these contracts.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of December&#160;31, 2023 and 2022, the total notional amount of the interest rate swaps was $19.7&#160;million and $26.7&#160;million, respectively, which will amortize ratably on a monthly basis to zero by the maturity dates. We receive floating interest payments monthly based on variable rates and pay fixed rates to the counterparties.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Assuming average interest rates and borrowings on variable-rate debt, a hypothetical 1.0%, or 100 basis points, change in interest rates would not have a material impact on our interest expense in 2023 or 2022.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Foreign Currency Exchange Rate Risk</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We conduct business in various foreign countries and, from time to time, settle our transactions in foreign currencies. We have experienced and will continue to experience fluctuations in our net income as a result of gains (losses) on the settlement and the remeasurement of monetary assets and liabilities denominated in currencies that are not our functional currency. As of December&#160;31, 2023, our foreign currency exposures were between the U.S. Dollar and the Canadian Dollar, Mexican Peso, and European Euro.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We have established a program that utilizes foreign currency forward contracts to offset the risk associated with the effects of certain foreign currency exposures. Foreign currency forward contracts are consistent with our strategy for financial risk management and are not used for trading or for speculative purposes. As of December&#160;31, 2023, the total notional amount of the foreign currency forward contracts was $5.1&#160;million (CAD$6.7&#160;million) and $1.2&#160;million (EUR&#8364;1.1&#160;million), which included $4.9&#160;million (CAD$6.4&#160;million) and $1.2&#160;million (EUR&#8364;1.1&#160;million) of foreign currency forward contracts not designated as cash flow hedges. As of December&#160;31, 2023, our foreign currency forward contracts mature at various dates through April 2025. As of December&#160;31, 2022, the total notional amount of the foreign currency forward contracts was $17.1&#160;million (CAD$23.2&#160;million) and $1.1&#160;million (EUR&#8364;1.1&#160;million), which included $0.3&#160;million (CAD$0.4&#160;million) of foreign currency forward contracts not designated as cash flow hedges.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">A hypothetical 10% change in the Canadian Dollar, Mexican Peso, or European Euro foreign currency exchange rates would not have a material impact on our reported net income in 2023 or 2022.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item8" title="item8" href="#"></a>Item</b>&#160;<b>8.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Financial Statements and Supplementary Data</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Consolidated Financial Statements required by this item are included on pages F-1 to <a class="tocPGNUM" href="#notesend">F-33</a> at the end of this 2023 Form&#160;10&#8209;K. The financial statement schedule required by this item is included on page&#160;<a href="#sched" style="-sec-extract:exhibit;">S&#8209;1</a>.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item9" title="item9" href="#"></a>Item</b>&#160;<b>9.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Changes in and Disagreements With Accountants on Accounting and Financial Disclosure</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">None.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item9a" title="item9a" href="#"></a>Item</b>&#160;<b>9A.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Controls and Procedures</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Evaluation of Disclosure Controls and Procedures</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Disclosure controls and procedures (as defined in Rules&#160;13a&#8209;15(e) and 15d&#8209;15(e) under the Securities Exchange Act of 1934, as amended (&#8220;Exchange Act&#8221;)) are designed to provide reasonable assurance that information required to be disclosed in reports we file or submit under the Exchange Act is recorded, processed, summarized, and reported within the time periods specified in the rules and forms of the Securities and Exchange Commission (&#8220;SEC&#8221;) and that such information is accumulated and communicated to our management, including our Chief Executive Officer (&#8220;CEO&#8221;) and Chief Financial Officer (&#8220;CFO&#8221;), as appropriate, to allow timely decisions regarding required disclosures.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      32
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our management, with the participation of our CEO and CFO, evaluated the effectiveness of our disclosure controls and procedures as of December&#160;31, 2023. Based on their evaluation, as of December&#160;31, 2023, our CEO and CFO have concluded that our disclosure controls and procedures (as defined in Rules&#160;13a&#8209;15(e) and 15d&#8209;15(e) under the Exchange Act) were effective to provide reasonable assurance that information required to be disclosed in reports we file or submit under the Exchange Act is recorded, processed, summarized, and reported within the time periods specified in the rules and forms of the SEC and that such information is accumulated and communicated to our management, including our CEO and CFO, as appropriate to allow timely decisions regarding required disclosures.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Management</b>&#8217;<b>s Report on Internal Control over Financial Reporting</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Our management is responsible for establishing and maintaining adequate internal control over financial reporting, as such term is defined in Exchange Act Rules&#160;13a&#8209;15(f) and 15d&#8209;15(f) under the Exchange Act. Internal control over financial reporting is a process designed to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with accounting principles generally accepted in the United States of America (&#8220;U.S.&#160;GAAP&#8221;). Internal control over financial reporting includes those policies and procedures that (i)&#160;pertain to the maintenance of records that, in reasonable detail, accurately and fairly reflect the transactions and dispositions of our assets; (ii)&#160;provide reasonable assurance that our transactions are recorded as necessary to permit preparation of financial statements in accordance with U.S.&#160;GAAP, and that our receipts and expenditures are being made only in accordance with authorizations of management and our directors; and (iii)&#160;provide reasonable assurance regarding prevention or timely detection of unauthorized acquisition, use, or disposition of our assets that could have a material effect on the financial statements.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Because of its inherent limitations, internal control over financial reporting may not prevent or detect misstatements. Also, projections of any evaluation of effectiveness to future periods are subject to the risk that controls may become inadequate because of changes in conditions, or that the degree of compliance with the policies or procedures may deteriorate.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Under the supervision and with the participation of our management, including our CEO and CFO, we conducted an assessment of our internal control over financial reporting as of December&#160;31, 2023. In making this assessment, we used the criteria set forth in &#8220;Internal Control-Integrated Framework (2013)&#8221; issued by the Committee of Sponsoring Organizations of the Treadway Commission (COSO). Based on this evaluation, management concluded that our internal control over financial reporting was&#160;effective as of December&#160;31, 2023.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The effectiveness of our internal control over financial reporting as of December&#160;31, 2023 has been audited by Moss Adams LLP, an independent registered public accounting firm, as stated in their report which appears herein.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Remediation of Prior Material Weakness</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">In the quarter ended December&#160;31, 2023, we completed our review of the processes and controls related to the implementation of our enterprise resource planning (&#8220;ERP&#8221;) system for the acquisition of Park Environmental Equipment, LLC (&#8220;ParkUSA&#8221;). We hired consultants to assist with an evaluation of the ERP system, process, and workflow design; we educated control owners concerning the principles and requirements of each control, with a focus on those related to sales and cost of sales transactions; and we implemented new monitoring controls including additional analyses to help mitigate the risk that controls do not operate effectively. These changes remediated our previously identified material weakness in implementation of our ERP system for the acquisition of ParkUSA.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Changes in Internal Control over Financial Reporting</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Except for the changes described above to remediate our previously identified material weakness, there were no significant changes in our internal control over financial reporting that occurred during the quarter ended December&#160;31, 2023 that materially affected, or are reasonably likely to materially affect, our internal control over financial reporting.</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</p>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="ecd:MtrlTermsOfTrdArrTextBlock" id="c2569392" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><a id="item9b" title="item9b" href="#"></a>Item</b>&#160;<b><em style="font: inherit;">9B.</em></b></p> </td><td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Other Information</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><span style="-sec-ix-hidden:c107875783"><span style="-sec-ix-hidden:c107876477"><span style="-sec-ix-hidden:c107876478"><span style="-sec-ix-hidden:c107876479">None</span></span></span></span> of our directors or officers adopted, modified, or terminated a Rule&#160;<em style="font: inherit;">10b5&#8209;1</em> trading arrangement or a non-Rule&#160;<em style="font: inherit;">10b5&#8209;1</em> trading arrangement during the quarter ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, as such terms are defined under Item&#160;<em style="font: inherit;">408</em>(a) of Regulation&#160;S&#8209;K.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><a id="item9c" title="item9c" href="#"></a>Item</b>&#160;<b>9C.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Disclosure Regarding Foreign Jurisdictions that Prevent Inspections</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">None.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      33
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
   &#160;
  </div>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="part3" title="part3" href="#"></a>PART</b>&#160;<b>III</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item10" title="item10" href="#"></a>Item</b>&#160;<b>10.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Directors, Executive Officers and Corporate Governance</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Directors, Executive Officers, Promoters and Control Persons</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The information required by Paragraph&#160;(a) and Paragraphs&#160;(c) through&#160;(g) of Item&#160;401 of Regulation&#160;S&#8209;K (except for information required by Paragraph&#160;(e) of that Item to the extent the required information pertains to our executive officers) and Item&#160;405 of Regulation&#160;S&#8209;K (to the extent required) is hereby incorporated by reference from our definitive proxy statement for the 2024&#160;Annual Meeting of Shareholders under the caption <i>Nominees and Continuing Directors</i>.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table lists our executive officers and each of their ages and positions as of December&#160;31, 2023.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">
   <tbody>
    <tr>
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: middle; width: 16%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Name</b></p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: middle; width: 8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Age</b></p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: middle; width: 74%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Current Position with Northwest Pipe Company</b></p> </td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255);">
     <td style="vertical-align: middle; width: 16%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Scott Montross</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">58</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 74%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Director, President, and Chief Executive Officer</p> </td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255);">
     <td style="vertical-align: middle; width: 16%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Aaron Wilkins</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">49</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 74%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Senior Vice President, Chief Financial Officer, and Corporate Secretary</p> </td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255);">
     <td style="vertical-align: middle; width: 16%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Miles Brittain</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">60</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 74%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Executive Vice President</p> </td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255);">
     <td style="vertical-align: middle; width: 16%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Eric Stokes</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">52</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 74%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Senior Vice President and General Manager of Engineered Steel Pressure Pipe</p> </td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255);">
     <td style="vertical-align: middle; width: 16%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Michael Wray</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">50</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 74%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Senior Vice President and General Manager of Precast Infrastructure and Engineered Systems</p> </td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255);">
     <td style="vertical-align: middle; width: 16%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Megan Kendrick</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">47</p> </td>
     <td style="vertical-align: bottom; width: 1%;">&#160;</td>
     <td style="vertical-align: middle; width: 74%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Vice President of Human Resources</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Scott Montross </i>has served as our Director, President, and CEO since January&#160;1, 2013. Mr.&#160;Montross joined the Company in May 2011 and served as our Executive Vice President and Chief Operating Officer. Mr.&#160;Montross has served in Senior Vice President level positions since 2003 with commercial, operational, and planning responsibilities and has spent a total of 24 years in the steel industry prior to joining the Company. Mr.&#160;Montross previously served as the Executive Vice President of the Flat Products Group for EVRAZ North America&#8217;s Oregon Steel Division from 2010 to 2011, as the Vice President and General Manager of EVRAZ North America from 2007 to 2010, as the Vice President of Marketing and Sales for Oregon Steel Mills,&#160;Inc. from 2003 to 2007, and as the Vice President of Marketing and Sales for National Steel Corporation from 2002 to 2003.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Aaron Wilkins </i>has served as our Senior Vice President and CFO since April 2020 and our Corporate Secretary since September 2019. Mr.&#160;Wilkins served as our Vice President of Finance and Corporate Controller from September 2016 to April 2020. Prior to joining the Company, Mr.&#160;Wilkins served two years as CFO of Omega Morgan, an industrial services company. Prior to that, Mr.&#160;Wilkins served seven years with Oregon Steel Mills,&#160;Inc. and then EVRAZ North America, holding several finance and accounting positions including Corporate Controller and Assistant Treasurer and Director of Finance of EVRAZ North America&#8217;s Flat Products Group.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Miles Brittain</i> has served as our Executive Vice President since May 2021. Prior to that, Mr.&#160;Brittain served as our Vice President of Operations from February 2020 to May 2021, Vice President of Operations for Water Transmission Engineered Systems from September 2018 to February 2020, and our Vice President of Operations, Water Transmission from 2013 to September 2018. Prior to joining the Company, Mr.&#160;Brittain served in the steel industry for over 28&#160;years, holding key positions including Vice President and General Manager for EVRAZ North America/Claymont Steel, Director of Operations for EVRAZ North America/Oregon Steel Mills, Inc., and Regional Director of Quality Assurance for National Steel Corporation.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Eric Stokes</i> has served as our Senior Vice President and General Manager of Engineered Steel Pressure Pipe since May 2021. Prior to that, Mr.&#160;Stokes served as our Senior Vice President of Sales and Marketing, Water Transmission from February 2020 to May 2021 and Vice President of Sales from April 2012 to February 2020. Prior to joining the Company in 2008, Mr.&#160;Stokes spent twelve years with Anderson Construction, holding key positions including Project Superintendent.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Michael Wray</i> has served as Senior Vice President and General Manager of Precast Infrastructure and Engineered Systems since November 2021. Mr.&#160;Wray served as Vice President and General Manager of Geneva from February 2020 to October 2021 and as Senior Director of Operations from September 2018 to January 2020. Prior to that, Mr.&#160;Wray held a variety of operational positions within the Company. Prior to joining the Company in 2007, Mr.&#160;Wray spent two years with Continental Pipe Company and nine years with Smith Megadiamond, a Schlumberger company.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Megan Kendrick </i>has served as our Vice President of Human Resources since January 2017. Prior to that, Ms.&#160;Kendrick held a variety of positions within the Company in the accounting and human resource departments. Prior to joining the Company in 2008, Ms.&#160;Kendrick worked for the Memphis Grizzlies of the National Basketball Association for seven years.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      34
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Code of Ethics</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We have a Code of Business Conduct and Ethics for all employees and a Code of Ethics for Senior Financial Officers. Copies can be found on our website in the Corporate Governance area of the Investor Relations section. None of the material on our website is part of this 2023 Form&#160;10&#8209;K. If there is any waiver from any provision of either the Code of Business Conduct and Ethics or the Code of Ethics for Senior Financial Officers, we will disclose the nature of such waiver on our website or in a Current Report on Form&#160;8&#8209;K.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Corporate Governance</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The information required by Items&#160;407(c)(3), (d)(4), and (d)(5) of Regulation&#160;S&#8209;K is hereby incorporated by reference from our definitive proxy statement for the 2024 Annual Meeting of Shareholders under the caption <i>Corporate Governance</i>.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item11" title="item11" href="#"></a>Item</b>&#160;<b>11.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Executive Compensation</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The information required by this Item is hereby incorporated by reference from our definitive proxy statement for the 2024 Annual Meeting of Shareholders under the captions <i>Executive Compensation Discussion and Analysis, Compensation Committee Interlocks and Insider Participation, </i>and <i>Compensation Committee Report</i>.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item12" title="item12" href="#"></a>Item</b>&#160;<b>12.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Security Ownership of Certain Beneficial Owners and Management and Related Stockholder Matters</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table provides information as of December&#160;31, 2023 with respect to the shares of our common stock that may be issued under our existing equity compensation plans.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;">
   <tbody>
    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Number of securities to be issued upon exercise of outstanding options, warrants and rights</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Weighted-average exercise price of outstanding options, warrants and rights</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Number of securities remaining available for future issuance under equity compensation plans (excluding securities reflected in column (a))</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
    </tr>

    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 55%; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Plan Category</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(a) (1)</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(b) (2)</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(c)</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
     <td>&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Equity compensation plans approved by security holders</p> </td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">226,391</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">722,573</td>
     <td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Equity compensation plans not approved by security holders (3)</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Total</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">226,391</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">722,573</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 4%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">(1)</p> </td>
     <td style="vertical-align: top; width: 96%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Consists of performance share awards and restricted stock unit awards under our 2022 Stock Incentive Plan and our 2007 Stock Incentive Plan. The number of securities disclosed in this table for performance share awards are at the target level of 100%.&#160;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 4%;">&#160;</td>
     <td style="vertical-align: top; width: 96%;">&#160;</td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 4%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(2)</p> </td>
     <td style="vertical-align: top; width: 96%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Reflects the exercise price per share of common stock purchasable upon the exercise of stock options only. As of December&#160;31, 2023, no stock options were outstanding.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 4%;">&#160;</td>
     <td style="vertical-align: top; width: 96%;">&#160;</td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 4%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">(3)</p> </td>
     <td style="vertical-align: top; width: 96%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">We do not have any equity compensation plans or arrangements that have not been approved by shareholders.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The information required by Item&#160;403 of Regulation&#160;S&#8209;K is included in our definitive proxy statement for the 2024 Annual Meeting of Shareholders under the caption <i>Stock Owned by Management and Principal Shareholders</i> and is incorporated herein by reference.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      35
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item13" title="item13" href="#"></a>Item</b>&#160;<b>13.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Certain Relationships and Related Transactions, and Director Independence</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The information required by this Item is hereby incorporated by reference from our definitive proxy statement for the 2024 Annual Meeting of Shareholders under the captions <i>Certain Relationships and Related Transactions </i>and <i>Nominees and Continuing Directors</i>.<br/> &#160;</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item14" title="item14" href="#"></a>Item</b>&#160;<b>14.</b></p> </td>
     <td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Principal Accountant Fees and Services</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The information required by this Item is hereby incorporated by reference from our definitive proxy statement for the 2024 Annual Meeting of Shareholders under the caption <i>Disclosure of Fees Paid to Independent Registered Public Accounting Firm</i>.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="part4" title="part4" href="#"></a>PART</b>&#160;<b>IV</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div>
   &#160;
  </div>
  <div><table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><a id="item15" title="item15" href="#"></a>Item</b>&#160;<b>15.</b></p> </td><td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Exhibit and Financial Statement Schedules</b></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">(a)&#160;(1)&#160;<i>Consolidated Financial Statements</i></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Consolidated Financial Statements, together with the report thereon of Moss Adams&#160;LLP are included on the pages indicated below.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"><tbody><tr><td style="vertical-align:bottom;width:9.2%;">&#160;</td><td style="border-bottom:solid 1px #000000;vertical-align:bottom;width:0.5%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Page</b>&#160;</p> </td></tr>
<tr><td style="vertical-align:top;width:9.2%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt 0pt 0pt 9pt;text-indent:-9pt;"><a style="-sec-extract:exhibit;" href="#report">Report of Independent Registered Public Accounting Firm (Moss Adams&#160;LLP, Portland, Oregon, PCAOB ID No.&#160;<ix:nonNumeric name="dei:AuditorFirmId" contextRef="d_2023-01-01_2023-12-31" id="ixv-16974">659</ix:nonNumeric>)</a></p> </td><td style="vertical-align:bottom;width:0.5%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><a class="tocPGNUM" href="#report">F-1</a></p> </td></tr>
<tr><td style="vertical-align:middle;width:9.2%;">&#160;</td><td style="vertical-align:middle;width:0.5%;">&#160;</td></tr>
<tr><td style="vertical-align:top;width:9.2%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><a style="-sec-extract:exhibit;" href="#income">Consolidated Statements of Operations for the years ended December&#160;31, 2023, 2022, and 2021</a></p> </td><td style="vertical-align:bottom;width:0.5%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><a class="tocPGNUM" href="#income">F-3</a></p> </td></tr>
<tr><td style="vertical-align:middle;width:9.2%;">&#160;</td><td style="vertical-align:middle;width:0.5%;">&#160;</td></tr>
<tr><td style="vertical-align:top;width:9.2%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt 0pt 0pt 9pt;text-indent:-9pt;"><a style="-sec-extract:exhibit;" href="#compincome">Consolidated Statements of Comprehensive Income for the years ended December&#160;31, 2023, 2022, and 2021</a></p> </td><td style="vertical-align:bottom;width:0.5%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><a class="tocPGNUM" href="#compincome">F-4</a></p> </td></tr>
<tr><td style="vertical-align:middle;width:9.2%;">&#160;</td><td style="vertical-align:middle;width:0.5%;">&#160;</td></tr>
<tr><td style="vertical-align:top;width:9.2%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><a style="-sec-extract:exhibit;" href="#bs">Consolidated Balance Sheets as of December&#160;31, 2023 and 2022</a></p> </td><td style="vertical-align:bottom;width:0.5%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><a class="tocPGNUM" href="#bs">F-5</a></p> </td></tr>
<tr><td style="vertical-align:middle;width:9.2%;">&#160;</td><td style="vertical-align:middle;width:0.5%;">&#160;</td></tr>
<tr><td style="vertical-align:top;width:9.2%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt 0pt 0pt 9pt;text-indent:-9pt;"><a style="-sec-extract:exhibit;" href="#equity">Consolidated Statements of Stockholders&#8217;&#160;Equity for the years ended December&#160;31, 2023, 2022, and 2021</a></p> </td><td style="vertical-align:bottom;width:0.5%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><a class="tocPGNUM" href="#equity">F-6</a></p> </td></tr>
<tr><td style="vertical-align:middle;width:9.2%;">&#160;</td><td style="vertical-align:middle;width:0.5%;">&#160;</td></tr>
<tr><td style="vertical-align:top;width:9.2%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><a style="-sec-extract:exhibit;" href="#cf">Consolidated Statements of Cash Flows for the years ended December&#160;31, 2023, 2022, and 2021</a></p> </td><td style="vertical-align:bottom;width:0.5%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><a class="tocPGNUM" href="#cf">F-7</a></p> </td></tr>
<tr><td style="vertical-align:top;width:9.2%;">&#160;</td><td style="vertical-align:bottom;width:0.5%;">&#160;</td></tr>
<tr><td style="vertical-align:top;width:9.2%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><a style="-sec-extract:exhibit;" href="#notes">Notes to Consolidated Financial Statements</a></p> </td><td style="vertical-align:bottom;width:0.5%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><a class="tocPGNUM" href="#notes">F-9</a></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">(a)&#160;(2)&#160;<i>Financial Statement Schedule</i></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following schedule is filed herewith:</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"><tbody><tr><td style="vertical-align: bottom; width: 10%;">&#160;</td><td style="vertical-align: bottom; width: 83%;">&#160;</td><td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Page</b>&#160;</p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Schedule&#160;II</p> </td><td style="vertical-align: bottom; width: 83%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><a style="-sec-extract:exhibit;" href="#sched">Valuation and Qualifying Accounts</a></p> </td><td style="vertical-align: bottom; width: 7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">S-1</p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Schedules not listed above have been omitted because the information required to be set forth therein is not applicable or is included in the Consolidated Financial Statements or notes thereto.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">(a)&#160;(3)&#160;Exhibits included herein:</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 100%;"><tbody><tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Exhibit Number</b></p> </td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Description</b></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">2.1</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774921023337/ex_289294.htm">Membership Interest Purchase Agreement dated as of October&#160;5, 2021 by and among Northwest Pipe Company, EBSR,&#160;LLC, the equity holders of EBSR,&#160;LLC, and Park Environmental Equipment,&#160;LLC, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on October&#160;6, 2021**</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">3.1</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774922006431/ex_341631.htm">Second Restated Articles of Incorporation, incorporated by reference to the Company&#8217;s Form&#160;10&#8209;K for the year ended December&#160;31, 2021, as filed with the Securities and Exchange Commission on March&#160;16, 2022</a></p> </td></tr>
</tbody></table>
<p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">&#160;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGFTR" style="text-align: center; width: 100%">
  <div class="hf-row">
   <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
    36
   </div>
  </div>
 </div>
 <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
 <div class="PGHDR" style="text-align: left; width: 100%">
  <div class="hf-row">
   <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
    <a style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;" href="#toc">Table of Contents</a>
   </div>
  </div>
 </div>
</div>
<p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Exhibit Number</b></p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Description</b></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">3.2</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000119312506212073/dex42.htm">First Amendment to Second Restated Articles of Incorporation, incorporated by reference to Exhibits to the Company&#8217;s Registration Statement on Form&#160;S&#8209;3, as amended, as filed with the Securities and Exchange Commission on October&#160;20, 2006, Commission Registration No.&#160;333&#8209;137923</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">3.3</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774923034919/ex_604073.htm">Amended and Restated Bylaws, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K as filed with the Securities and Exchange Commission on December&#160;19, 2023</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">4.1</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774920004236/nwpx20191231_10k.htm">Description of Securities Registered Under Section&#160;12 of the Securities Exchange Act of 1934, incorporated by reference to the Company&#8217;s Form&#160;10&#8209;K for the year ended December&#160;31, 2019, as filed with the Securities and Exchange Commission on March&#160;3, 2020</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.1</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000091205700036237/ex-10_21.htm">Northwest Pipe NQ Retirement Savings Plan, dated July&#160;1, 1999, incorporated by reference to Exhibits to the Company&#8217;s Quarterly Report Form&#160;10&#8209;Q for the quarter ended June&#160;30, 2000, as filed with the Securities and Exchange Commission on August&#160;11, 2000*</a></p> </td></tr>
<tr><td style="vertical-align: middle; width: 10%;">&#160;</td><td style="vertical-align: middle; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.2</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000119312507090451/ddef14a.htm">Northwest Pipe Company 2007 Stock Incentive Plan, incorporated by reference to Appendix&#160;A to the Company&#8217;s Definitive Proxy Statement dated April&#160;20, 2007, as filed with the Securities and Exchange Commission on April&#160;26, 2007*</a></p> </td></tr>
<tr><td style="vertical-align: middle; width: 10%;">&#160;</td><td style="vertical-align: middle; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.3</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000119312513158965/d516547ddef14a.htm#toc516547_54">Amendment to the Northwest Pipe Company 2007 Stock Incentive Plan dated April&#160;12, 2013, incorporated by reference to Appendix&#160;A to the Company&#8217;s Definitive Proxy Statement, as filed with the Securities and Exchange Commission on April&#160;17, 2013*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.4</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774916036297/ex10-3.htm">Amended and Restated Change in Control Agreement between Scott Montross and Northwest Pipe Company dated August&#160;1, 2016, incorporated by reference to the Company&#8217;s Form&#160;10&#8209;Q for the quarter ended June&#160;30, 2016, as filed with the Securities and Exchange Commission on August&#160;3, 2016*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: top; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.5</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774920006765/ex_179382.htm">Form of Performance Share Unit Agreement, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on April&#160;1, 2020*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.6</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774920006765/ex_179383.htm">Form of Restricted Stock Unit Agreement, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on April&#160;1, 2020*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.7</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774920007135/ex_180059.htm">Change in Control Agreement dated April&#160;1, 2020 between Northwest Pipe Company and Aaron Wilkins, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on April&#160;3, 2020*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.8</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774921006626/ex_235278.htm">Form of Performance Share Unit Agreement, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on March&#160;19, 2021*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.9</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774921006626/ex_235279.htm">Form of Restricted Stock Unit Agreement, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on March&#160;19, 2021*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.10</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774921014617/ex_255404.htm">Change in Control Agreement dated June&#160;10, 2021 between Northwest Pipe Company and Miles Brittain, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K/A, as filed with the Securities and Exchange Commission on June&#160;11, 2021*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.11</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774921016569/ex_261713.htm">Credit Agreement dated June&#160;30, 2021 by and among Wells Fargo Bank, National Association, Wells Fargo Securities,&#160;LLC, Northwest Pipe Company, NWPC,&#160;LLC, and Geneva Pipe and Precast Company, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on July&#160;7, 2021</a></p> </td></tr>
</tbody></table>
<p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">&#160;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGFTR" style="text-align: center; width: 100%">
  <div class="hf-row">
   <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
    37
   </div>
  </div>
 </div>
 <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
 <div class="PGHDR" style="text-align: left; width: 100%">
  <div class="hf-row">
   <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
    <a style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;" href="#toc">Table of Contents</a>
   </div>
  </div>
 </div>
</div>
<p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Exhibit Number</b></p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="border-bottom: 1px solid rgb(0, 0, 0); vertical-align: bottom; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Description</b></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.12</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774921016569/ex_261714.htm">Guaranty and Security Agreement dated June&#160;30, 2021 among Northwest Pipe Company, NWPC,&#160;LLC, Geneva Pipe and Precast Company, Permalok Corporation, Thompson Tank Holdings,&#160;Inc., WTG Holding U.S.,&#160;Inc., Bolenco Corporation, and Wells Fargo Bank, National Association, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on July&#160;7, 2021</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.13</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774921024523/ex_295225.htm">Incremental Amendment dated October&#160;22, 2021 by and among Northwest Pipe Company, NWPC,&#160;LLC, Geneva Pipe and Precast Company, Park Environmental Equipment,&#160;LLC, certain other subsidiaries of Northwest Pipe Company, and Wells Fargo Bank, National Association, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on October&#160;28, 2021</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.14</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774922010077/nwpx20220322_def14a.htm">Northwest Pipe Company 2022 Stock Incentive Plan, incorporated by reference to Appendix&#160;A to the Company&#8217;s Definitive Proxy Statement on Schedule&#160;14A, as filed with the Securities and Exchange Commission on April&#160;28, 2022&#160;*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.15</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774922011168/ex_369645.htm">Second Amendment to Credit Agreement dated April&#160;29, 2022 by and among Northwest Pipe Company, NWPC,&#160;LLC, Geneva Pipe and Precast Company, Park Environmental Equipment,&#160;LLC, certain other subsidiaries of Northwest Pipe Company, and Wells Fargo Bank, National Association, incorporated by reference to the Company&#8217;s Form&#160;10&#8209;Q for the quarter ended March&#160;31, 2022, as filed with the Securities and Exchange Commission on May&#160;6, 2022</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.16</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774922015752/ex_386685.htm">Form of Performance Share Unit Agreement, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on June&#160;23, 2022&#160;*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.17</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774922015752/ex_386686.htm">Form of Restricted Stock Unit Agreement, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on June&#160;23, 2022&#160;*</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">10.18</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774922028913/ex_454174.htm">Form of Indemnification Agreement, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K as filed with the Securities and Exchange Commission on December&#160;12, 2022</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;">10.19</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%; text-align: justify;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774923010174/ex_498703.htm">Form of Performance Share Unit Agreement, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on April&#160;13, 2023 *</a></td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;">10.20</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%; text-align: justify;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774923010174/ex_498704.htm">Form of Restricted Stock Unit Agreement, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on April&#160;13, 2023 *</a></td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;">10.21</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%; text-align: justify;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774923019231/ex_517177.htm">Third Amendment to Credit Agreement dated as of June&#160;29, 2023, by and among Northwest Pipe Company, NWPC, LLC, Geneva Pipe and Precast Company, Park Environmental Equipment, LLC, certain other subsidiaries of Northwest Pipe Company, and Wells Fargo Bank National Association, incorporated by reference to the Company&#8217;s Current Report on Form&#160;8&#8209;K, as filed with the Securities and Exchange Commission on July&#160;3, 2023 **</a></td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">21.1</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="ex_602812.htm">Subsidiaries of the Registrant, filed herewith</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">23.1</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="ex_602813.htm">Consent of Moss Adams&#160;LLP, filed herewith</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">31.1</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="ex_602814.htm">Certification of Chief Executive Officer pursuant to Section&#160;302 of the Sarbanes-Oxley Act of 2002, filed herewith</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">31.2</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="ex_602815.htm">Certification of Chief Financial Officer pursuant to Section&#160;302 of the Sarbanes-Oxley Act of 2002, filed herewith</a></p> </td></tr>
</tbody></table>
<p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">&#160;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGFTR" style="text-align: center; width: 100%">
  <div class="hf-row">
   <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
    38
   </div>
  </div>
 </div>
 <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
 <div class="PGHDR" style="text-align: left; width: 100%">
  <div class="hf-row">
   <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
    <a style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;" href="#toc">Table of Contents</a>
   </div>
  </div>
 </div>
</div>
<p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="border-bottom:solid 1px #000000;vertical-align:top;width:4.6%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Exhibit Number</b></p> </td><td style="vertical-align:top;width:0.5%;">&#160;</td><td style="border-bottom:solid 1px #000000;vertical-align:bottom;width:41.1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Description</b></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">32.1</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="ex_602816.htm">Certification pursuant to 18&#160;U.S.C. Section&#160;1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, filed herewith</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">32.2</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="ex_602817.htm">Certification pursuant to 18&#160;U.S.C. Section&#160;1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, filed herewith</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;">97</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"><a style="-sec-extract:exhibit;" href="ex_608626.htm">Incentive Compensation Recovery Policy</a></td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">99.1</p> </td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><a style="-sec-extract:exhibit;" href="http://www.sec.gov/Archives/edgar/data/1001385/000143774922026589/ex_440600.htm">Interim Funding Agreement dated August&#160;2, 2022 by and between Wells Fargo Equipment Finance,&#160;Inc. and Geneva Pipe and Precast Company, incorporated by reference to the Company&#8217;s Form&#160;10&#8209;Q for the quarter ended September&#160;30, 2022, as filed with the Securities and Exchange Commission on November&#160;9, 2022</a></p> </td></tr>
<tr><td style="vertical-align: top; width: 10%;">&#160;</td><td style="vertical-align: top; width: 1%;">&#160;</td><td style="vertical-align: middle; width: 89%;">&#160;</td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">101.INS</p> </td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;">Inline XBRL Instance Document</p> </td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">101.SCH</p> </td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;">Inline XBRL Taxonomy Extension Schema Document</p> </td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">101.CAL</p> </td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;">Inline XBRL Taxonomy Extension Calculation Linkbase Document</p> </td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">101.DEF</p> </td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;">Inline XBRL Taxonomy Extension Definition Linkbase Document</p> </td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">101.LAB</p> </td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;">Inline XBRL Taxonomy Extension Label Linkbase Document</p> </td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">101.PRE</p> </td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;">Inline XBRL Taxonomy Extension Presentation Linkbase Document</p> </td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="vertical-align: top; width: 10%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">104</p> </td><td style="vertical-align: top; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="vertical-align: middle; width: 89%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: justify; margin: 0pt;">Cover Page Interactive Data File (formatted as Inline XBRL and contained in Exhibit&#160;101)</p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;"><tbody><tr><td style="vertical-align: top; width: 4%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">*</p> </td><td style="vertical-align: top; width: 96%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">This exhibit constitutes a management contract or compensatory plan or arrangement.</p> </td></tr>
<tr><td style="vertical-align: middle; width: 4%;">&#160;</td><td style="vertical-align: middle; width: 96%;">&#160;</td></tr>
<tr><td style="vertical-align: top; width: 4%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">**</p> </td><td style="vertical-align: middle; width: 96%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Schedules and similar attachments to this exhibit have been omitted pursuant to Item&#160;601(a)(5) to Regulation&#160;S&#8209;K. The Registrant will furnish supplementally a copy of any omitted schedule or similar attachment to the Securities and Exchange Commission request.</p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><a id="item16" title="item16" href="#"></a>Item</b>&#160;<b>16.</b></p> </td><td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Form</b>&#160;<b>10</b>&#8209;<b>K Summary</b></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt 0pt 0pt 8pt;">None.</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt 0pt 0pt 8pt;">&#160;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGFTR" style="text-align: center; width: 100%">
  <div class="hf-row">
   <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
    39
   </div>
  </div>
 </div>
 <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
 <div class="PGHDR" style="text-align: left; width: 100%">
  <div class="hf-row">
   <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
    <a style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;" href="#toc">Table of Contents</a>
   </div>
  </div>
 </div>
</div>
<div>
 &#160;
</div>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="report" title="report" href="#"></a>Report of Independent Registered Public Accounting Firm</b></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">To the Stockholders and the Board of Directors of</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Northwest Pipe Company</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><i><b>Opinions on the Financial Statements and Internal Control over Financial Reporting</b></i></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">We have audited the accompanying consolidated balance sheets of Northwest Pipe Company and Subsidiaries (the &#8220;Company&#8221;) as of December&#160;31, 2023 and 2022, the related consolidated statements of operations, comprehensive income, stockholders&#8217; equity and cash flows for each of the three years in the period ended December 31, 2023, and the related notes and schedule listed in the Index at Item&#160;15(a)(2) (collectively referred to as the &#8220;consolidated financial statements&#8221;). We also have audited the Company&#8217;s internal control over financial reporting as of December&#160;31, 2023, based on criteria established in <i>Internal Control&#160;- Integrated Framework (2013)</i> issued by the Committee of Sponsoring Organizations of the Treadway Commission (COSO).</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">In our opinion, the consolidated financial statements referred to above present fairly, in all material respects, the consolidated financial position of the Company as of December&#160;31, 2023 and 2022, and the consolidated results of its operations and its cash flows for each of the three years in the period ended December&#160;31, 2023, in conformity with accounting principles generally accepted in the United States of America. Also in our opinion, the Company maintained, in all material respects, effective internal control over financial reporting as of December&#160;31, 2023, based on criteria established in <i>Internal Control&#160;- Integrated Framework (2013)</i> issued by COSO.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><i><b>Basis for Opinions</b></i></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The Company&#8217;s management is responsible for these consolidated financial statements, for maintaining effective internal control over financial reporting, and for its assessment of the effectiveness of internal control over financial reporting, included in the accompanying Management&#8217;s Report on Internal Control over Financial Reporting included in Item&#160;9A. Our responsibility is to express an opinion on the Company&#8217;s consolidated financial statements and an opinion on the Company&#8217;s internal control over financial reporting based on our audits. We are a public accounting firm registered with the Public Company Accounting Oversight Board (United States) (&#8220;PCAOB&#8221;) and are required to be independent with respect to the Company in accordance with the U.S. federal securities laws and the applicable rules and regulations of the Securities and Exchange Commission and the PCAOB.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">We conducted our audits in accordance with the standards of the PCAOB. Those standards require that we plan and perform the audits to obtain reasonable assurance about whether the consolidated financial statements are free of material misstatement, whether due to error or fraud, and whether effective internal control over financial reporting was maintained in all material respects.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Our audits of the consolidated financial statements included performing procedures to assess the risks of material misstatement of the consolidated financial statements, whether due to error or fraud, and performing procedures to respond to those risks. Such procedures included examining, on a test basis, evidence regarding the amounts and disclosures in the consolidated financial statements. Our audits also included evaluating the accounting principles used and significant estimates made by management, as well as evaluating the overall presentation of the consolidated financial statements. Our audit of internal control over financial reporting included obtaining an understanding of internal control over financial reporting, assessing the risk that a material weakness exists, and testing and evaluating the design and operating effectiveness of internal control based on the assessed risk. Our audits also included performing such other procedures as we considered necessary in the circumstances. We believe that our audits provide a reasonable basis for our opinions.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><i><b>Definition and Limitations of Internal Control Over Financial Reporting</b></i></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">A company&#8217;s internal control over financial reporting is a process designed to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles. A company&#8217;s internal control over financial reporting includes those policies and procedures that (1)&#160;pertain to the maintenance of records that, in reasonable detail, accurately and fairly reflect the transactions and dispositions of the assets of the company; (2)&#160;provide reasonable assurance that transactions are recorded as necessary to permit preparation of financial statements in accordance with generally accepted accounting principles, and that receipts and expenditures of the company are being made only in accordance with authorizations of management and directors of the company; and (3)&#160;provide reasonable assurance regarding prevention or timely detection of unauthorized acquisition, use, or disposition of the company&#8217;s assets that could have a material effect on the financial statements.</p>
<div>
 &#160;
</div>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
  F-1
 </div>
 <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
 <div class="PGHDR" style="text-align: left; width: 100%">
  <div class="hf-row">
   <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
    <a style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;" href="#toc">Table of Contents</a>
   </div>
  </div>
 </div>
</div>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Because of its inherent limitations, internal control over financial reporting may not prevent or detect misstatements. Also, projections of any evaluation of effectiveness to future periods are subject to the risk that controls may become inadequate because of changes in conditions, or that the degree of compliance with the policies or procedures may deteriorate.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><i><b>Critical Audit Matter</b></i></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The critical audit matter communicated below is a matter arising from the current period audit of the consolidated financial statements that was communicated or required to be communicated to the audit committee and that (1)&#160;relates to accounts or disclosures that are material to the consolidated financial statements and (2)&#160;involved our especially challenging, subjective, or complex judgments. The communication of critical audit matters does not alter in any way our opinion on the consolidated financial statements, taken as a whole, and we are not, by communicating the critical audit matter below, providing a separate opinion on the critical audit matter or on the accounts or disclosures to which it relates.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><b>Revenue Recognition &#8211; Estimated Costs to Complete a Contract</b></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">As presented in the consolidated statement of operations and described in Notes&#160;2 and 16 to the consolidated financial statements, the Company&#8217;s consolidated revenues were $444.4&#160;million for the year ended December&#160;31, 2023. Revenue of $296.4&#160;million was derived from contracts where revenue is recognized over time as work is completed because of the continuous transfer of control to the customer. Under this method, the costs incurred to date as a percentage of total estimated costs at completion are used to calculate revenue. Total estimated costs, and thus contract revenue and margin, are impacted by many factors, which can cause significant changes in estimates during the life cycle of a project.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Based on the high degree of subjectivity involved in the determination of estimated costs to complete a contract, which in turn led to a high degree of auditor effort and subjectivity in performing procedures and evaluating audit evidence, we have identified these estimates as a critical audit matter. Changes in these estimates could have significant impact on both the timing and amount of contract revenue to be recognized.</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The primary procedures we performed to address this critical audit matter included:</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<table cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; margin-right: 0pt;"><tbody><tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td><td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Testing the design and operating effectiveness of internal controls related to the Company&#8217;s accumulation of estimated costs to complete a contract. This included testing controls over the Company&#8217;s review of monthly changes in estimated costs to complete a contract.</td></tr>
<tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">&#8226;</p> </td><td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Testing a selection of contracts based on earned revenue for the year ended December&#160;31, 2023 and assessed the reasonableness of the estimated costs.</td></tr>
<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#8226;</td><td style="width: auto; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Testing the reasonableness of management&#8217;s cost estimates by performing a lookback analysis comparing margins and estimated costs to complete on contracts in process as of December&#160;31, 2022, that were completed or in process during the year ended December&#160;31, 2023.</td></tr>
</tbody></table>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">/s/&#160;<ix:nonNumeric name="dei:AuditorName" contextRef="d_2023-01-01_2023-12-31" id="ixv-16975">Moss Adams&#160;LLP</ix:nonNumeric></p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><ix:nonNumeric name="dei:AuditorLocation" contextRef="d_2023-01-01_2023-12-31" id="ixv-16976">Portland, Oregon</ix:nonNumeric></p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">March 5, 2024</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">We have served as the Company&#8217;s auditor since 2016.</p></div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    F-2
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
   &#160;
  </div>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="income" title="income" href="#"></a>NORTHWEST PIPE COMPANY AND SUBSIDIARIES</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>CONSOLIDATED STATEMENTS OF OPERATIONS</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">(In thousands, except per share amounts)</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Net sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874584" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">444,355</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874585" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">457,665</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874586" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">333,313</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Cost of sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874587" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:num-dot-decimal" decimals="-3">366,713</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874588" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:num-dot-decimal" decimals="-4">371,810</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874589" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:num-dot-decimal" decimals="-3">289,059</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Gross profit</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874590" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">77,642</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874591" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">85,855</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874592" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">44,254</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Selling, general, and administrative expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874593" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:SellingGeneralAndAdministrativeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">43,784</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874594" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:SellingGeneralAndAdministrativeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">41,034</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874595" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:SellingGeneralAndAdministrativeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">28,222</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Operating income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874596" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">33,858</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874597" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">44,821</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874598" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">16,032</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Other income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874599" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">276</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874600" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">97</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874601" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">328</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Interest expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874602" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:InterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,855</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874603" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:InterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,568</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874604" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:InterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,202</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Income before income taxes</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874605" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">29,279</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874606" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-4">41,350</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874607" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">15,158</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Income tax expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874608" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,207</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874609" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,201</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874610" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,635</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874611" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">21,072</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874612" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,149</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874613" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,523</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net income per share:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Basic</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874614" contextRef="d_2023-01-01_2023-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">2.11</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874615" contextRef="d_2022-01-01_2022-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">3.14</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874616" contextRef="d_2021-01-01_2021-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">1.17</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Diluted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874617" contextRef="d_2023-01-01_2023-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">2.09</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874618" contextRef="d_2022-01-01_2022-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">3.11</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874619" contextRef="d_2021-01-01_2021-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">1.16</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Shares used in per share calculations:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Basic</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874620" contextRef="d_2023-01-01_2023-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,991</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874621" contextRef="d_2022-01-01_2022-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,914</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874622" contextRef="d_2021-01-01_2021-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,854</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Diluted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874623" contextRef="d_2023-01-01_2023-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,081</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874624" contextRef="d_2022-01-01_2022-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,012</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874625" contextRef="d_2021-01-01_2021-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,928</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td></tr>
</tbody></table>
  </div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    F-3
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
   &#160;
  </div>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="compincome" title="compincome" href="#"></a>NORTHWEST PIPE COMPANY AND SUBSIDIARIES</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">(In thousands)</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874634" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">21,072</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874635" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,149</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874636" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,523</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Other comprehensive income (loss), net of tax:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="padding-left: 9pt; width: 52%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Pension liability adjustment</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874637" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">339</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874638" contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">45</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874639" contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">308</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Unrealized gain (loss) on foreign currency forward contracts designated as cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874640" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">107</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874641" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">289</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874642" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">124</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Unrealized gain (loss) on interest rate swaps designated as cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874643" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">403</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874644" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">649</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874645" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="padding-left: 9pt; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Other comprehensive income (loss), net of tax</p> </td><td style="width: 1%; padding-bottom: 1px;">&#160;</td><td style="width: 1%; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874646" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">171</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; padding-bottom: 1px;">&#160;</td><td style="width: 1%; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874647" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">893</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; padding-bottom: 1px;">&#160;</td><td style="width: 1%; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874648" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">184</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="padding-left: 18pt; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Comprehensive income</p> </td><td style="width: 1%; padding-bottom: 3px;">&#160;</td><td style="width: 1%; padding-left: 0px; margin-left: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874649" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">20,901</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; padding-bottom: 3px;">&#160;</td><td style="width: 1%; padding-left: 0px; margin-left: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874650" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">32,042</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; padding-bottom: 3px;">&#160;</td><td style="width: 1%; padding-left: 0px; margin-left: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874651" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,707</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>
  </div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    F-4
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
   &#160;
  </div>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="bs" title="bs" href="#"></a>NORTHWEST PIPE COMPANY AND SUBSIDIARIES</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>CONSOLIDATED BALANCE SHEETS</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">(Dollar amounts in thousands, except per share amounts)</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Assets</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Current assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874657" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,068</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874658" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,681</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Trade and other receivables, less allowance for doubtful accounts of $<span style="-sec-ix-hidden:c107876407">121 </span>and $<span style="-sec-ix-hidden:c107876408">369</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874659" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:ReceivablesNetCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">47,645</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874660" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:ReceivablesNetCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">71,563</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Contract assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874661" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerAssetNetCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">120,516</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874662" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerAssetNetCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">121,778</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Inventories</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874663" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">91,229</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874664" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">71,029</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Prepaid expenses and other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874665" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,026</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874666" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,689</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total current assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874667" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:AssetsCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">272,484</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874668" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:AssetsCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-4">278,740</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Property and equipment, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874669" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">143,955</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874670" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">133,166</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Operating lease right-of-use assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874671" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">88,155</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874672" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">93,124</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874673" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:num-dot-decimal" decimals="-3">55,504</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874674" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:num-dot-decimal" decimals="-3">55,504</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Intangible assets, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874675" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,074</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874676" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">35,264</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Other assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874677" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:OtherAssetsNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,709</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874678" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:OtherAssetsNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,542</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874679" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-3">597,881</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874680" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-4">601,340</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Liabilities and Stockholders&#8217; Equity</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Current liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Current debt</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874681" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LongTermDebtCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,756</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874682" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:LongTermDebtCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,756</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Accounts payable</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874683" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:AccountsPayableCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,142</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874684" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:AccountsPayableCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">26,968</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Accrued liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874685" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:AccruedLiabilitiesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">27,913</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874686" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:AccruedLiabilitiesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">30,957</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Contract liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874687" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-4">21,450</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874688" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">17,456</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Current portion of operating lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874689" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,933</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874690" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,702</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total current liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874691" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LiabilitiesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">96,194</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874692" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:LiabilitiesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">90,839</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Borrowings on line of credit</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874693" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LongTermLineOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-3">54,485</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874694" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:LongTermLineOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-3">83,696</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Operating lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874695" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">85,283</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874696" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">89,472</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Deferred income taxes</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874697" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,942</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874698" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,402</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Other long-term liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874699" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:OtherLiabilitiesNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,617</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874700" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:OtherLiabilitiesNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,657</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874701" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:Liabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">257,521</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874702" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:Liabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">283,066</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Commitments and contingencies (Note 15)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 13%;">&#160;<span style="-sec-ix-hidden:c107877899">&#160;</span></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 13%;">&#160;<span style="-sec-ix-hidden:c107877900">&#160;</span></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Stockholders&#8217; equity:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman; text-indent: -9pt;">Preferred stock, $<span style="-sec-ix-hidden:c107876409"><span style="-sec-ix-hidden:c107876410">.01</span></span> par value, <span style="-sec-ix-hidden:c107876411"><span style="-sec-ix-hidden:c107876412">10,000,000 </span></span>shares authorized, <span style="-sec-ix-hidden:c107876413"><span style="-sec-ix-hidden:c107876415"><span style="-sec-ix-hidden:c107876414"><span style="-sec-ix-hidden:c107876416">none </span></span></span></span>issued or outstanding</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874703" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:PreferredStockValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874704" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:PreferredStockValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman; text-indent: -9pt;">Common stock, $<span style="-sec-ix-hidden:c107876417"><span style="-sec-ix-hidden:c107876418">.01</span></span> par value, <span style="-sec-ix-hidden:c107876419"><span style="-sec-ix-hidden:c107876420">15,000,000 </span></span>shares authorized, <span style="-sec-ix-hidden:c107876421"><span style="-sec-ix-hidden:c107876423">9,985,580 </span></span>and <span style="-sec-ix-hidden:c107876422"><span style="-sec-ix-hidden:c107876424">9,927,360 </span></span>shares issued and outstanding as of December 31, 2023 and 2022, respectively</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874705" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:CommonStockValue" scale="3" format="ixt:num-dot-decimal" decimals="-5">100</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874706" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:CommonStockValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">99</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Additional paid-in-capital</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874707" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:AdditionalPaidInCapitalCommonStock" scale="3" format="ixt:num-dot-decimal" decimals="-3">129,095</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874708" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:AdditionalPaidInCapitalCommonStock" scale="3" format="ixt:num-dot-decimal" decimals="-3">127,911</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Retained earnings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874709" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" format="ixt:num-dot-decimal" decimals="-3">212,125</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874710" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" format="ixt:num-dot-decimal" decimals="-3">191,053</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Accumulated other comprehensive loss</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874711" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">960</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874712" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">789</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total stockholders&#8217; equity</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874713" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4">340,360</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874714" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">318,274</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total liabilities and stockholders&#8217; equity</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874715" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">597,881</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874716" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4">601,340</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
  </div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    F-5
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
   &#160;
  </div>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="equity" title="equity" href="#"></a>NORTHWEST PIPE COMPANY AND SUBSIDIARIES</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 15pt;"><b>CONSOLIDATED STATEMENTS OF STOCKHOLDERS</b>&#8217;<b> EQUITY</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 15pt;">(Dollar amounts in thousands)</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Accumulated</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Additional</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Other</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Total</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Common Stock</em></em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Paid-In-</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Retained</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"><b><em style="font: inherit;">Comprehensive</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Stockholders&#8217;</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Shares</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Amount</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Capital</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Earnings</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Loss</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Equity</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balances, December 31, 2020</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874747" contextRef="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:SharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF">9,805,437</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874748" contextRef="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">98</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874749" contextRef="i_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">123,013</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874750" contextRef="i_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">148,381</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874751" contextRef="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,866</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874752" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">269,626</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874754" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874755" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874756" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,523</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874757" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874758" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,523</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other comprehensive income (loss):</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Pension liability adjustment, net of tax expense of $<span style="-sec-ix-hidden:c107876430">102</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874760" contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874761" contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874762" contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874763" contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">308</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874764" contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">308</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Unrealized loss on foreign currency forward contracts designated as cash flow hedges, net of tax benefit of $<span style="-sec-ix-hidden:c107876436">41</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874766" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874767" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874768" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874769" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">124</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874770" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">124</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Issuance of common stock under stock compensation plans, net of tax withholdings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874771" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:num-dot-decimal" decimals="INF">65,130</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874772" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874773" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,167</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874774" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874775" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874776" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,166</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Share-based compensation expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874778" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874779" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,216</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874780" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874781" contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874782" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,216</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balances, December 31, 2021</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874783" contextRef="i_2021-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:SharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF">9,870,567</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874784" contextRef="i_2021-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">99</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874785" contextRef="i_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">125,062</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874786" contextRef="i_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">159,904</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874787" contextRef="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,682</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874788" contextRef="i_2021-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">283,383</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874790" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874791" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874792" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,149</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874793" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874794" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,149</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other comprehensive income (loss):</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Pension liability adjustment, net of tax benefit of $<span style="-sec-ix-hidden:c107876442">14</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874796" contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874797" contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874798" contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874799" contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">45</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874800" contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">45</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Unrealized gain on foreign currency forward contracts designated as cash flow hedges, net of tax expense of $<span style="-sec-ix-hidden:c107876448">95</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874802" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874803" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874804" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874805" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">289</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874806" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">289</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Unrealized gain on interest rate swaps designated as cash flow hedges, net of tax expense of $<span style="-sec-ix-hidden:c107876454">213</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874808" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874809" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874810" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874811" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">649</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874812" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">649</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Issuance of common stock under stock compensation plans, net of tax withholdings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874813" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:num-dot-decimal" decimals="INF">56,793</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874814" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874815" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">853</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874816" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874817" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874818" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">853</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Share-based compensation expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874820" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874821" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,702</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874822" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874823" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874824" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,702</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balances, December 31, 2022</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874825" contextRef="i_2022-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:SharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF">9,927,360</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874826" contextRef="i_2022-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">99</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874827" contextRef="i_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">127,911</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874828" contextRef="i_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">191,053</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874829" contextRef="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">789</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874830" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">318,274</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874832" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874833" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874834" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">21,072</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874835" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874836" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">21,072</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other comprehensive income (loss):</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Pension liability adjustment, net of tax expense of $<span style="-sec-ix-hidden:c107876460">110</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874838" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874839" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874840" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874841" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">339</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874842" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">339</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Unrealized loss on foreign currency forward contracts designated as cash flow hedges, net of tax benefit of $<span style="-sec-ix-hidden:c107876466">45</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874844" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874845" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874846" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874847" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">107</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874848" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">107</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt 0pt 0pt 27pt; text-indent: -9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Unrealized loss on interest rate swaps designated as cash flow hedges, net of tax benefit of $<span style="-sec-ix-hidden:c107876472">134</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874850" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874851" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874852" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c107874853" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">403</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c107874854" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">403</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Issuance of common stock under stock compensation plans, net of tax withholdings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874855" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:num-dot-decimal" decimals="INF">86,836</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874856" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874857" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,653</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874858" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874859" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874860" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,652</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Repurchase of common stock</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c107874861" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0" format="ixt:num-dot-decimal" decimals="INF">28,616</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874862" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c107874863" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">835</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874864" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" xsi:nil="true"></ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874865" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" xsi:nil="true"></ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c107874866" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">835</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Share-based compensation expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874868" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874869" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,672</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874870" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874871" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874872" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,672</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Balances, December 31, 2023</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874873" contextRef="i_2023-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:SharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF">9,985,580</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874874" contextRef="i_2023-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-5">100</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874875" contextRef="i_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">129,095</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874876" contextRef="i_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">212,125</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107874877" contextRef="i_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">960</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 8%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874878" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4">340,360</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td></tr>
</tbody></table>
  </div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 15pt;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 15pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    F-6
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
   &#160;
  </div>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="cf" title="cf" href="#"></a>NORTHWEST PIPE COMPANY AND SUBSIDIARIES</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;"><b>CONSOLIDATED STATEMENTS OF CASH FLOWS</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;">(In thousands)</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Cash flows from operating activities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874888" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">21,072</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874889" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,149</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874890" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,523</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Adjustments to reconcile net income to net cash provided by (used in) operating activities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Depreciation and finance lease amortization</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874891" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:DepreciationAndFinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,616</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874892" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:DepreciationAndFinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,664</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874893" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:DepreciationAndFinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,482</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Amortization of intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874894" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:AmortizationOfIntangibleAssets" scale="3" format="ixt:num-dot-decimal" decimals="-4">4,190</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874895" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:AmortizationOfIntangibleAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,439</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874896" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:AmortizationOfIntangibleAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,142</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Deferred income taxes</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c107874897" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">172</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874898" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">514</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107874899" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-4">180</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Gain on insurance proceeds</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874900" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:GainOnInsuranceProceeds" scale="3" format="ixt:num-dot-decimal" decimals="-3">466</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874901" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:GainOnInsuranceProceeds" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874902" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:GainOnInsuranceProceeds" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Share-based compensation expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874903" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:ShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,672</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874904" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:ShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,702</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874905" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:ShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,216</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Other, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874906" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:OtherNoncashIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,547</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874907" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:OtherNoncashIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">286</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874908" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:OtherNoncashIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">193</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Changes in operating assets and liabilities, net of acquired assets and assumed liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: Times New Roman;">Trade and other receivables</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874909" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">23,775</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874910" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables" scale="3" format="ixt:num-dot-decimal" decimals="-3">19,346</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874911" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">392</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: Times New Roman;">Contract assets, net</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874912" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInContractWithCustomerAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">5,256</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874913" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInContractWithCustomerAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">225</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874914" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInContractWithCustomerAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">33,752</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: Times New Roman;">Inventories</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874915" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInInventories" scale="3" format="ixt:num-dot-decimal" decimals="-5">20,200</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874916" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInInventories" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,378</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874917" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInInventories" scale="3" format="ixt:num-dot-decimal" decimals="-4">17,650</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: Times New Roman;">Prepaid expenses and other assets</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874918" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">5,241</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874919" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">3,381</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874920" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">6,727</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: Times New Roman;">Accounts payable</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874921" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,704</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874922" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">5,826</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874923" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" format="ixt:num-dot-decimal" decimals="-3">16,783</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: Times New Roman;">Accrued and other liabilities</p> </td><td style="width: 1%; padding-bottom: 1px;">&#160;</td><td style="width: 1%; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874924" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">6,780</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; padding-bottom: 1px;">&#160;</td><td style="width: 1%; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874925" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,698</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; padding-bottom: 1px;">&#160;</td><td style="width: 1%; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874926" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">7,047</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt;">Net cash provided by (used in) operating activities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874927" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3">53,455</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874928" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-4">17,540</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874929" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">5,811</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Cash flows from investing activities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Acquisition of business, net of cash acquired</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874930" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874931" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874932" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3" format="ixt:num-dot-decimal" decimals="-3">87,215</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Payment of working capital adjustment in acquisition of business</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(<ix:nonFraction id="c107874933" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,731</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874934" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107874935" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Purchases of property and equipment</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874936" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">18,291</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874937" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">22,829</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874938" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,262</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Purchases of intangible assets</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874939" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireIntangibleAssets" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874940" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireIntangibleAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">327</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874941" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireIntangibleAssets" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Proceeds from insurance</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874942" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:ProceedsFromInsuranceSettlementInvestingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3">431</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874943" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:ProceedsFromInsuranceSettlementInvestingActivities" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874944" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:ProceedsFromInsuranceSettlementInvestingActivities" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Other investing activities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874945" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:PaymentsForProceedsFromOtherInvestingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">219</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874946" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:PaymentsForProceedsFromOtherInvestingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">106</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874947" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:PaymentsForProceedsFromOtherInvestingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">325</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt;">Net cash used in investing activities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874948" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">20,372</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874949" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">23,050</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874950" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">100,152</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Cash flows from financing activities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Borrowings on line of credit</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874951" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:ProceedsFromLinesOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-3">155,398</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874952" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:ProceedsFromLinesOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-3">177,634</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874953" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:ProceedsFromLinesOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-3">122,272</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Repayments on line of credit</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874954" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:RepaymentsOfLinesOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-3">184,609</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874955" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:RepaymentsOfLinesOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-3">180,699</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874956" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:RepaymentsOfLinesOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-3">35,511</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Borrowings on other debt</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874957" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:ProceedsFromIssuanceOfLongTermDebt" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874958" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:ProceedsFromIssuanceOfLongTermDebt" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,756</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874959" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:ProceedsFromIssuanceOfLongTermDebt" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Payments on other debt</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874960" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:RepaymentsOfLongTermDebt" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874961" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:RepaymentsOfLongTermDebt" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874962" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:RepaymentsOfLongTermDebt" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,762</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Payments on finance lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874963" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">826</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874964" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">597</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874965" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">415</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Tax withholdings related to net share settlements of restricted stock and performance share awards</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874966" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,652</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874967" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">853</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874968" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,166</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -18pt;">Repurchase of common stock</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107874969" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:num-dot-decimal" decimals="-3">707</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874970" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874971" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Other financing activities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874972" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:ProceedsFromPaymentsForOtherFinancingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-5" sign="-">300</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874973" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:ProceedsFromPaymentsForOtherFinancingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">47</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874974" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:ProceedsFromPaymentsForOtherFinancingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">385</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt;">Net cash provided by (used in) financing activities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107874975" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">32,696</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874976" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,194</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874977" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3">71,033</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 36pt; font-size: 10pt; font-family: Times New Roman;">Change in cash and cash equivalents</p> </td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874978" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" format="ixt:num-dot-decimal" decimals="-3">387</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;"><ix:nonFraction id="c107874979" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" format="ixt:num-dot-decimal" decimals="-3">684</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right;">(<ix:nonFraction id="c107874980" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">34,930</ix:nonFraction></td><td style="width: 1%; padding-left: 0px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Cash and cash equivalents, beginning of period</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874981" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,681</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874982" contextRef="i_2021-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,997</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107874983" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:num-dot-decimal" decimals="-3">37,927</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Cash and cash equivalents, end of period</p> </td><td style="width: 1%; padding-bottom: 3px;">&#160;</td><td style="width: 1%; padding-left: 0px; margin-left: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874984" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,068</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; padding-bottom: 3px;">&#160;</td><td style="width: 1%; padding-left: 0px; margin-left: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874985" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,681</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; padding-bottom: 3px;">&#160;</td><td style="width: 1%; padding-left: 0px; margin-left: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; padding-left: 0px; margin-left: 0px; text-align: right; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107874986" contextRef="i_2021-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,997</ix:nonFraction></td><td style="width: 1%; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>
  </div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    F-7
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="cfcontinued" title="cfcontinued" href="#"></a>NORTHWEST PIPE COMPANY AND SUBSIDIARIES</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;"><b>CONSOLIDATED STATEMENTS OF CASH FLOWS, Continued</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;">(In thousands)</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Supplemental disclosure of cash flow information:</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Cash paid during the period for interest, net of amounts capitalized</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874998" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:InterestPaidNet" scale="3" format="ixt:num-dot-decimal" decimals="-4">4,660</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107874999" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:InterestPaidNet" scale="3" format="ixt:num-dot-decimal" decimals="-4">3,170</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875000" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:InterestPaidNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">339</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Cash paid during the period for income taxes, net of refunds of $<span style="-sec-ix-hidden:c107876473">145</span>, $<span style="-sec-ix-hidden:c107876474">23</span>, and $<span style="-sec-ix-hidden:c107876475">79</span></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875001" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeTaxesPaidNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,911</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875002" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeTaxesPaidNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,774</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875003" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeTaxesPaidNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,481</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Noncash investing and financing activities:</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Accrued property and equipment purchases</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875004" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:CapitalExpendituresIncurredButNotYetPaid" scale="3" format="ixt:num-dot-decimal" decimals="-3">656</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875005" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:CapitalExpendituresIncurredButNotYetPaid" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,314</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875006" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:CapitalExpendituresIncurredButNotYetPaid" scale="3" format="ixt:num-dot-decimal" decimals="-3">788</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Accrued payment for repurchase of common stock</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107875007" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:AccruedPaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:num-dot-decimal" decimals="-3">128</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107875008" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:AccruedPaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107875009" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:AccruedPaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Accrued consideration in acquisition of business</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875010" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875011" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" scale="3" format="ixt:num-dot-decimal" decimals="-4">1,820</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875012" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" scale="3" format="ixt:num-dot-decimal" decimals="-3">911</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Right-of-use assets obtained in exchange for operating lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875013" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">952</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875014" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">568</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875015" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">16,043</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Right-of-use assets obtained in exchange for finance lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875016" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-4">5,270</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875017" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,466</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875018" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">853</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
  </div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    F-8
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><a id="notes" title="notes" href="#"></a>NORTHWEST PIPE COMPANY AND SUBSIDIARIES</b></p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;"><b>NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" id="c2569393" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">1.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>ORGANIZATION:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Northwest Pipe Company (collectively with its subsidiaries, the &#8220;Company&#8221;) is a leading manufacturer of water-related infrastructure products, and operates in <ix:nonFraction id="c107875790" contextRef="d_2023-01-01_2023-12-31" unitRef="Pure" name="us-gaap:NumberOfOperatingSegments" scale="0" format="ixt-sec:numwordsen" decimals="INF">two</ix:nonFraction> segments, Engineered Steel Pressure Pipe (&#8220;SPP&#8221;) and Precast Infrastructure and Engineered Systems (&#8220;Precast&#8221;). This segment presentation is consistent with how the Company&#8217;s chief operating decision maker, its Chief Executive Officer, evaluates performance of the Company and makes decisions regarding the allocation of resources. See Note&#160;<em style="font: inherit;">19,</em> &#8220;Segment Information&#8221; for detailed descriptions of these segments.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In addition to being the largest manufacturer of engineered steel water pipeline systems in North America, the Company manufactures stormwater and wastewater technology products; high-quality precast and reinforced concrete products; pump lift stations; steel casing pipe, bar-wrapped concrete cylinder pipe, and <em style="font: inherit;">one</em> of the largest offerings of pipeline system joints, fittings, and specialized components. Strategically positioned to meet growing water and wastewater infrastructure needs, the Company provides solution-based products for a wide range of markets under the ParkUSA, Geneva Pipe and Precast, Permalok&#174;, and Northwest Pipe Company lines. The Company is headquartered in Vancouver, Washington, and has <ix:nonFraction id="c107875793" contextRef="d_2023-01-01_2023-12-31" unitRef="Pure" name="nwpx:NumberOfManufacturingFacilities" scale="0" format="ixt:num-dot-decimal" decimals="INF">13</ix:nonFraction>&#160;manufacturing facilities across North America.</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:SignificantAccountingPoliciesTextBlock" id="c2569394" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">2.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>SUMMARY OF SIGNIFICANT ACCOUNTING POLICIES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ConsolidationPolicyTextBlock" id="c107878016" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Basis of Consolidation and Presentation</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Consolidated Financial Statements are expressed in United States Dollars and include the accounts of the Company and its subsidiaries over which the Company exercises control as of the financial statement date. Intercompany accounts and transactions have been eliminated.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:UseOfEstimates" id="c107878017" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Use of Estimates</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The preparation of the Consolidated Financial Statements in conformity with accounting principles generally accepted in the United States of America (&#8220;U.S.&#160;GAAP&#8221;) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and disclosure of contingent assets and liabilities as of the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. The Company bases its estimates on historical experience and on various other assumptions that are believed to be reasonable under the circumstances. On an ongoing basis, the Company evaluates all of its estimates, including those related to business combinations, allowance for doubtful accounts, inventories, property and equipment (including depreciation and valuation), goodwill, intangible assets (including amortization), revenue recognition, share-based compensation, income taxes, and litigation and other contingencies. Actual results <em style="font: inherit;"> may </em>differ from these estimates under different assumptions or conditions.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:BusinessCombinationsPolicy" id="c107878018" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Business Combinations</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Business combinations are accounted for under the acquisition method which requires identifiable assets acquired and liabilities assumed in the acquired business be recognized and measured at fair value on the acquisition date, which is the date that the acquirer obtains control of the acquired business. The amount by which the fair value of consideration transferred as the purchase price exceeds the net fair value of assets acquired and liabilities assumed is recorded as goodwill. The amount by which the net fair value of assets acquired and liabilities assumed exceeds the fair value of consideration transferred as the purchase price is recorded as a bargain purchase gain. Acquisition-related transaction costs are expensed as incurred.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">These estimates are inherently uncertain and unpredictable. In addition, unanticipated events and circumstances <em style="font: inherit;"> may </em>occur which <em style="font: inherit;"> may </em>affect the accuracy or validity of such estimates. As a result, during the measurement period, which <em style="font: inherit;"> may </em>be up to <em style="font: inherit;">one</em> year from the acquisition date, the Company <em style="font: inherit;"> may </em>record adjustments to the assets acquired and liabilities assumed with the corresponding offset to goodwill or bargain purchase gain. Upon the conclusion of the measurement period or final determination of the fair value of assets acquired or liabilities assumed, whichever comes first, any subsequent adjustments are recorded to the Company&#8217;s Consolidated Statements of Operations.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">9</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:CashAndCashEquivalentsPolicyTextBlock" id="c107878019" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Cash and Cash Equivalents</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Cash and cash equivalents consist of cash and short-term, highly-liquid investments with maturities of <em style="font: inherit;">three</em> months or less when purchased. At times, the Company will have outstanding checks in excess of related bank balances (&#8220;book overdraft&#8221;). If this occurs, the amount of the book overdraft will be reclassified to accounts payable, and changes in the book overdraft will be reflected as a component of operating activities in the Consolidated Statements of Cash Flows. The Company had a book overdraft of $<ix:nonFraction id="c107875798" contextRef="i_2023-12-31" unitRef="USD" name="nwpx:BookOverdrafts" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.8</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107875799" contextRef="i_2022-12-31" unitRef="USD" name="nwpx:BookOverdrafts" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.6</ix:nonFraction>&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ReceivablesPolicyTextBlock" id="c107878020" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Receivables and Allowance for Doubtful Accounts</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Trade receivables are reported on the Consolidated Balance Sheets net of doubtful accounts. The Company maintains allowances for estimated losses resulting from the inability of its customers to make required payments or from contract disputes. The amounts of such allowances are based on historical experience and management&#8217;s judgment. The Company will write down or write off a receivable account once the account is deemed uncollectible. If the customers&#8217; financial conditions were to deteriorate resulting in their inability to make payments, or if contract disputes were to escalate, additional allowances <em style="font: inherit;"> may </em>need to be recorded which would result in additional expenses being recorded for the period in which such determination was made.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" id="c107878021" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Contract Assets and Contract Liabilities</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Contract assets primarily represent revenue earned over time but <em style="font: inherit;">not</em> yet billable based on the terms of the contracts. These amounts will be billed based on the terms of the contracts, which can include certain milestones, partial shipments, or completion of the contracts. Payment terms of amounts billed vary based on the customer, but are typically due within <em style="font: inherit;">30</em>&#160;days of invoicing. Contract liabilities represent advance billings on contracts, typically for steel.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:InventoryPolicyTextBlock" id="c107878022" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Inventories</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Inventories are stated at the lower of cost and net realizable value. The cost of raw material inventories of steel is either on a specific identification basis or on an average cost basis. The cost of substantially all other raw material inventories, as well as work-in-process and supplies, is either on an average cost basis or at standard cost. The cost of finished goods uses the <em style="font: inherit;">first</em>-in, <em style="font: inherit;">first</em>-out method of accounting.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:PropertyPlantAndEquipmentPolicyTextBlock" id="c107878023" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Property and Equipment</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Property and equipment are recorded at cost. Maintenance and repairs are expensed as incurred, and costs of new equipment and buildings, as well as costs of expansions or refurbishment of existing equipment and buildings, including interest where applicable, are capitalized. Depreciation and amortization are determined by the units of production method for most equipment and by the straight-line method for the remaining assets based on the estimated useful lives of the related assets. Estimated useful lives by major classes of property and equipment are as follows: Land improvements (<ix:nonNumeric contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c107875807" format="ixt-sec:duryear">15</ix:nonNumeric>&#160;&#8211; <ix:nonNumeric contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c107875808" format="ixt-sec:duryear">30</ix:nonNumeric>&#160;years); Buildings (<ix:nonNumeric contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c107875809" format="ixt-sec:duryear">20</ix:nonNumeric>&#160;&#8211; <ix:nonNumeric contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c107875810" format="ixt-sec:duryear">40</ix:nonNumeric>&#160;years); Leasehold improvements (<ix:nonNumeric contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c107875811" format="ixt-sec:duryear">5</ix:nonNumeric>&#160;&#8211; <ix:nonNumeric contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c107875812" format="ixt-sec:duryear">30</ix:nonNumeric>&#160;years); and Machinery and equipment (<ix:nonNumeric contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c107875813" format="ixt-sec:duryear">3</ix:nonNumeric>&#160;&#8211; <ix:nonNumeric contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c107875814" format="ixt-sec:duryear">30</ix:nonNumeric>&#160;years). Depreciation expense calculated under the units of production method <em style="font: inherit;"> may </em>be less than, equal to, or greater than depreciation expense calculated under the straight-line method due to variances in production levels. Upon disposal, costs and related accumulated depreciation of the assets are removed from the accounts and resulting gains or losses are reflected in operating expenses. The Company leases certain equipment under long-term finance leases, which are being amortized on a straight-line basis over the shorter of its useful life or the lease term.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company assesses impairment of property and equipment whenever changes in circumstances indicate that the carrying values of the asset or asset group(s) <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recoverable. The asset group is the lowest level at which identifiable cash flows are largely independent of the cash flows of other groups of assets or liabilities. The recoverable value of a long-lived asset group is determined by estimating future undiscounted cash flows using assumptions about the expected future operating performance of the Company.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:LesseeLeasesPolicyTextBlock" id="c107878025" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Leases</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has entered into various equipment and property leases. Certain lease agreements include renewals and/or purchase options set to expire at various dates, and certain lease agreements include rental payments adjusted periodically for inflation. The Company&#8217;s lease agreements do <em style="font: inherit;">not</em> contain any material residual value guarantees or material restrictive covenants.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">10</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">The Company determines if an arrangement is a lease at inception. Leases with an initial term of <em style="font: inherit;">twelve</em> months or less are <em style="font: inherit;">not</em> recorded on the balance sheet; costs for these leases are recognized on a straight-line basis over the lease term. Right-of-use assets and lease liabilities are recognized based on the present value of lease payments over the lease term at commencement date. When the Company&#8217;s leases do <em style="font: inherit;">not</em> provide an implicit rate of return, the Company uses its revolving loan borrowing rate in determining the present value of lease payments. Some of the Company&#8217;s lease agreements contain non-lease components, which are accounted for separately.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p></ix:nonNumeric><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy" id="c107878026" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Goodwill</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Goodwill represents the excess of the purchase price over the fair values of the assets acquired and liabilities assumed in conjunction with an acquisition. Goodwill is reviewed for impairment annually, or whenever events occur or circumstances change that indicate goodwill <em style="font: inherit;"> may </em>be impaired. During the <em style="font: inherit;">fourth</em> quarter of <em style="font: inherit;">2022,</em> the Company changed the date of its annual impairment test of goodwill from <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31</em> to <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">30.</em> The change in the impairment test date lessens resource constraints that exist in connection with the Company&#8217;s year-end close and financial reporting process and provides for additional time to complete the required impairment testing. This change did <em style="font: inherit;">not</em> represent a material change to the Company&#8217;s method of applying an accounting principle, and therefore did <em style="font: inherit;">not</em> delay, accelerate, or avoid an impairment charge.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In testing goodwill for impairment, the Company has the option to perform a qualitative assessment to determine whether the existence of events or circumstances indicate that it is more-likely-than-<em style="font: inherit;">not</em> (more than <em style="font: inherit;">50%</em>) that the fair value of a reporting unit is less than its carrying amount. When performing a qualitative assessment, the Company evaluates factors such as industry and market conditions, cost factors, overall financial performance, and other relevant entity specific events and changes. If the qualitative assessment indicates that it is more-likely-than-<em style="font: inherit;">not</em> that the fair value of the reporting unit is less than its carrying amount, or if the Company chooses <em style="font: inherit;">not</em> to perform the qualitative assessment, then a quantitative assessment is performed to determine the reporting unit&#8217;s fair value. If the reporting unit&#8217;s carrying value exceeds its fair value, then an impairment loss is recognized for the amount of the excess of the carrying amount over the reporting unit&#8217;s fair value, <em style="font: inherit;">not</em> to exceed the total amount of goodwill allocated to the reporting unit.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" id="c107878027" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Intangible Assets</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Intangible assets consist primarily of customer relationships, trade names and trademarks, patents, and backlog recorded as the result of acquisition activity. Intangible assets are amortized using the straight-line method over estimated useful lives ranging from <span style="-sec-ix-hidden:c107875832">ten</span>&#160;to <ix:nonNumeric contextRef="i_2023-12-31_RangeAxis-MaximumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c107875833" format="ixt-sec:duryear">21</ix:nonNumeric>&#160;years.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:WorkersCompensationInsurancePolicyTextBlock" id="c107878028" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Workers Compensation</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company is self-insured and maintains high deductible policies for losses and liabilities associated with workers compensation claims. Losses are accrued based upon the Company&#8217;s estimates of the aggregate liability for claims incurred using historical experience and certain actuarial assumptions followed in the insurance industry. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, workers compensation reserves recorded were $<ix:nonFraction id="c107875837" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:WorkersCompensationLiabilityCurrentAndNoncurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.2</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107875838" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:WorkersCompensationLiabilityCurrentAndNoncurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.6</ix:nonFraction>&#160;million, respectively, of which $<ix:nonFraction id="c107875839" contextRef="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilityMember" unitRef="USD" name="us-gaap:WorkersCompensationLiabilityCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.3</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107875840" contextRef="i_2022-12-31_BalanceSheetLocationAxis-AccruedLiabilityMember" unitRef="USD" name="us-gaap:WorkersCompensationLiabilityCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.5</ix:nonFraction>&#160;million, respectively, were included in Accrued liabilities and $<ix:nonFraction id="c107875841" contextRef="i_2023-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember" unitRef="USD" name="us-gaap:WorkersCompensationLiabilityNoncurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.9</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107875842" contextRef="i_2022-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember" unitRef="USD" name="us-gaap:WorkersCompensationLiabilityNoncurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.1</ix:nonFraction>&#160;million, respectively, were included in Other long-term liabilities.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:AccruedLiabilitiesPolicyTextBlock" id="c107878029" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Accrued Liabilities</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Accrued liabilities as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em> includes accrued bonus of $<ix:nonFraction id="c107875846" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:AccruedBonusesCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">5.2</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107875847" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:AccruedBonusesCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-6">8.0</ix:nonFraction>&#160;million, respectively, and accrued sales tax of $<ix:nonFraction id="c107875848" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:SalesAndExciseTaxPayableCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">5.3</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107875849" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:SalesAndExciseTaxPayableCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.4</ix:nonFraction>&#160;million, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:DerivativesPolicyTextBlock" id="c107878030" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Derivative Instruments</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In the normal course of business, the Company is exposed to interest rate and foreign currency exchange rate fluctuations. Consistent with the Company&#8217;s strategy for financial risk management, the Company has established a program that utilizes foreign currency forward contracts and interest rate swaps to offset the risks associated with the effects of these exposures. The Company utilizes cash flow hedge accounting treatment for qualifying foreign currency forward contracts and interest rate swaps. Instruments that do <em style="font: inherit;">not</em> qualify for cash flow hedge accounting treatment are remeasured at fair value on each balance sheet date and resulting gains and losses are recognized in earnings.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:StockholdersEquityPolicyTextBlock" id="c107878031" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Share Repurchases</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">All shares reacquired in connection with the Company&#8217;s share repurchase program are retired and treated as authorized and unissued shares.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">11</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:PensionAndOtherPostretirementPlansPolicy" id="c107878032" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Pension Benefits</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has <em style="font: inherit;">two</em> defined benefit pension plans that have been frozen since <em style="font: inherit;">2001.</em> The Company funds these plans to cover current plan costs plus amortization of the unfunded plan liabilities. To record these obligations, management uses estimates relating to investment returns, mortality, and discount rates.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p></ix:nonNumeric><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" id="c107878033" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Foreign Currency Transactions</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The functional currency of the Company, including its Mexican operations, is the United States dollar. Monetary assets and liabilities are remeasured at current exchange rates and non-monetary assets and liabilities are remeasured at historical exchange rates. Revenue and expenses related to monetary assets and liabilities are remeasured at average exchange rates and at historical exchange rates for the revenue and expenses related to non-monetary assets and liabilities.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Transaction gains (losses) from foreign currency forward contracts designated as cash flow hedges are included in Accumulated other comprehensive loss as a separate component of Stockholders&#8217; equity. For the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em> and <em style="font: inherit;">2021</em>, net foreign currency transaction gains (losses) of $<ix:nonFraction id="c107875858" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:ForeignCurrencyTransactionGainLossRealized" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.4</ix:nonFraction>&#160;million, $<ix:nonFraction id="c107875859" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:ForeignCurrencyTransactionGainLossRealized" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.5</ix:nonFraction>&#160;million, and ($<ix:nonFraction id="c107875860" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:ForeignCurrencyTransactionGainLossRealized" scale="6" format="ixt:num-dot-decimal" decimals="-5" sign="-">0.5</ix:nonFraction>)&#160;million, respectively, were recognized in earnings.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:RevenueRecognitionPolicyTextBlock" id="c107878034" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Revenue Recognition</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company manufactures water infrastructure steel pipe products, which are generally made to custom specifications for installation contractors serving projects funded by public water agencies, as well as precast and reinforced concrete products. Generally, each of the Company&#8217;s contracts with its customers contains a single performance obligation, as the promise to transfer products is <em style="font: inherit;">not</em> separately identifiable from other promises in the contract and, therefore, is <em style="font: inherit;">not</em> distinct. The Company generally does <em style="font: inherit;">not</em> recognize revenue on a contract until the contract has approval and commitment from both parties, the contract rights and payment terms can be identified, the contract has commercial substance, and its collectability is probable.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">SPP revenue for water infrastructure steel pipe products is recognized over time as the manufacturing process progresses because of the Company&#8217;s right to payment for work performed to date plus a reasonable profit on cancellations for unique products that have <em style="font: inherit;">no</em> alternative use to the Company. Revenue is measured by the costs incurred to date relative to the estimated total direct costs to fulfill each contract (cost-to-cost method). Contract costs include all material, labor, and other direct costs incurred in satisfying the performance obligations. The cost of steel material is recognized as a contract cost when the steel is introduced into the manufacturing process. Changes in job performance, job conditions, and estimated profitability, including those arising from contract change orders, contract penalty provisions, foreign currency exchange rate movements, changes in raw materials costs, and final contract settlements <em style="font: inherit;"> may </em>result in revisions to estimates of revenue, costs, and income, and are recognized in the period in which the revisions are determined. Provisions for losses on uncompleted contracts, included in Accrued liabilities, are estimated by comparing total estimated contract revenue to the total estimated contract costs and a loss is recognized during the period in which it becomes probable and can be reasonably estimated.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Precast revenue for water infrastructure concrete pipe and precast concrete products is recognized at the time control is transferred to customers, in an amount that reflects the consideration the Company expects to be entitled to in exchange for the products. All variable consideration that <em style="font: inherit;"> may </em>affect the total transaction price, including contractual discounts, returns, and credits, is included in net sales. Estimates for variable consideration are based on historical experience, anticipated performance, and management&#8217;s judgment. The Company&#8217;s contracts do <em style="font: inherit;">not</em> contain significant financing.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy" id="c107878035" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Share-based Compensation</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company recognizes the compensation cost of employee and director services received in exchange for awards of equity instruments based on the grant date estimated fair value of the awards. The Company estimates the fair value of restricted stock units (&#8220;RSUs&#8221;) and performance share awards (&#8220;PSAs&#8221;) using the value of the Company&#8217;s stock on the date of grant. Share-based compensation cost is recognized over the period during which the employee or director is required to provide service in exchange for the award and, as forfeitures occur, the associated compensation cost recognized to date is reversed. For awards with performance-based payout conditions, the Company recognizes compensation cost based on the probability of achieving the performance conditions, with changes in expectations recognized as an adjustment to earnings in the period of change. Any recognized compensation cost is reversed if the conditions are ultimately <em style="font: inherit;">not</em> met.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">12</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:IncomeTaxPolicyTextBlock" id="c107878036" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Income Taxes</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Income taxes are recorded using an asset and liability approach that requires the recognition of deferred income tax assets and liabilities for the expected future income tax consequences of events that have been recognized in the Consolidated Financial Statements or income tax returns. Valuation allowances are established when necessary to reduce deferred income tax assets to the amount expected to be realized. The determination of the provision for income taxes requires significant judgment, the use of estimates, and the interpretation and application of complex tax laws. The provision for income taxes primarily reflects a combination of income earned and taxed in the various United States federal, state, local, and to a lesser extent, foreign jurisdictions. Jurisdictional tax law changes, increases or decreases in permanent differences between book and tax items, accruals or adjustments of accruals for unrecognized income tax benefits or valuation allowances, and the change in the mix of earnings from these taxing jurisdictions all affect the overall effective income tax rate.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company records income tax reserves for federal, state, local, and international exposures relating to periods subject to audit. The development of reserves for these exposures requires judgments about tax issues, potential outcomes and timing, and is a subjective estimate. The Company assesses income tax positions and records income tax benefits for all years subject to examination based upon management&#8217;s evaluation of the facts, circumstances, and information available at the reporting dates. For those income tax positions where it is more-likely-than-<em style="font: inherit;">not</em> that an income tax benefit will be sustained, the Company has recorded the largest amount of income tax benefit with a greater than <em style="font: inherit;">50%</em> likelihood of being realized upon settlement with a tax authority that has full knowledge of all relevant information. For those income tax positions where it is <em style="font: inherit;">not</em> more-likely-than-<em style="font: inherit;">not</em> that an income tax benefit will be sustained, <em style="font: inherit;">no</em> income tax benefit has been recognized in the Consolidated Financial Statements.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ComprehensiveIncomePolicyPolicyTextBlock" id="c107878037" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Accumulated Other Comprehensive Loss</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Accumulated other comprehensive loss includes unrealized gains and losses on derivative instruments related to the effective portion of cash flow hedges and changes in the funded status of the defined benefit pension plans, both net of the related income tax effect.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:EarningsPerSharePolicyTextBlock" id="c107878038" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Net Income per Share</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Basic net income per share is computed by dividing the net income by the weighted-average number of shares of common stock outstanding during the period. Diluted net income per share is computed by giving effect to all dilutive potential shares of common stock, including RSUs and PSAs, assumed to be outstanding during the period using the treasury stock method. Performance-based PSAs are considered dilutive when the related performance conditions have been met assuming the end of the reporting period represents the end of the performance period. In periods with a net loss, all potential shares of common stock are excluded from the computation of diluted net loss per share as the impact would be antidilutive.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Net income per basic and diluted weighted-average common share outstanding was calculated as follows (in thousands, except per share amounts):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" id="c2569395" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875027" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">21,072</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875028" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,149</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875029" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,523</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Basic weighted-average common shares outstanding</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875030" contextRef="d_2023-01-01_2023-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,991</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875031" contextRef="d_2022-01-01_2022-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,914</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875032" contextRef="d_2021-01-01_2021-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,854</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Effect of potentially dilutive common shares (1)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875033" contextRef="d_2023-01-01_2023-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" scale="3" format="ixt:num-dot-decimal" decimals="-4">90</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875034" contextRef="d_2022-01-01_2022-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" scale="3" format="ixt:num-dot-decimal" decimals="-3">98</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875035" contextRef="d_2021-01-01_2021-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" scale="3" format="ixt:num-dot-decimal" decimals="-3">74</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Diluted weighted-average common shares outstanding</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875036" contextRef="d_2023-01-01_2023-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,081</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875037" contextRef="d_2022-01-01_2022-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,012</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875038" contextRef="d_2021-01-01_2021-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,928</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net income per common share</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Basic</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875039" contextRef="d_2023-01-01_2023-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">2.11</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875040" contextRef="d_2022-01-01_2022-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">3.14</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875041" contextRef="d_2021-01-01_2021-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">1.17</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Diluted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875042" contextRef="d_2023-01-01_2023-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">2.09</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875043" contextRef="d_2022-01-01_2022-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">3.11</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875044" contextRef="d_2021-01-01_2021-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">1.16</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 27pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">(<em style="font: inherit;">1</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">There were <ix:nonFraction id="c107875874" contextRef="d_2023-01-01_2023-12-31" unitRef="Share" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> antidilutive shares for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, or <em style="font: inherit;">2021</em>.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">13</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ConcentrationRiskCreditRisk" id="c107878039" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Concentrations of Credit Risk</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Financial instruments, which potentially subject the Company to concentrations of credit risk, consist principally of trade receivables, foreign currency forward contracts, interest rate swaps, and deferred compensation plan assets. Trade receivables generally represent a large number of customers, including municipalities, manufacturers, distributors, and contractors, dispersed across a wide geographic base. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, <ix:nonFraction id="c107875883" contextRef="d_2023-01-01_2023-12-31" unitRef="Pure" name="nwpx:NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" scale="0" format="ixt-sec:numwordsen" decimals="INF">one</ix:nonFraction> customer had a balance in excess of <em style="font: inherit;">10%</em> of total accounts receivable. Foreign currency forward contracts and interest rate swaps are with a high-quality financial institution. The Company&#8217;s deferred compensation plan assets, included in Other assets, are invested in a diversified portfolio of stock and bond mutual funds.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock" id="c107878040" escape="true"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Recent Accounting and Reporting Developments</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Accounting Changes</i></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> October 2021, </em>the Financial Accounting Standards Board (&#8220;FASB&#8221;) issued Accounting Standards Update (&#8220;ASU&#8221;) <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2021&#8209;08,</em> &#8220;Business Combinations (Topic&#160;<em style="font: inherit;">805</em>): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2021&#8209;08&#8221;</em>) which requires an entity to recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Accounting Standards Codification Topic&#160;<em style="font: inherit;">606,</em> &#8220;Revenue from Contracts with Customers,&#8221; as if it had originated the contracts. The Company adopted ASU&#160;<em style="font: inherit;">2021&#8209;08</em> on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1,</em> <em style="font: inherit;">2023</em> and the impact was <em style="font: inherit;">not</em> material to the Company&#8217;s financial position, results of operations, or cash flows.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Recent Accounting Standards</i></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> March 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;01</em> &#8220;Leases (Topic&#160;<em style="font: inherit;">842</em>): Common Control Arrangements&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;01&#8221;</em>) which requires leasehold improvements associated with common control leases be (<em style="font: inherit;">1</em>)&#160;amortized by the lessee over the useful life of the leasehold improvements to the common control group as long as the lessee controls the use of the underlying asset through a lease and (<em style="font: inherit;">2</em>)&#160;accounted for as a transfer between entities under common control through an adjustment to equity if, and when, the lessee <em style="font: inherit;">no</em> longer controls the use of the underlying asset. ASU&#160;<em style="font: inherit;">2023&#8209;01</em> is effective for the Company beginning <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1,</em> <em style="font: inherit;">2024,</em> including interim periods in <em style="font: inherit;">2024,</em> with early adoption permitted. The Company does <em style="font: inherit;">not</em> expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> October 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;06,</em> &#8220;Disclosure Improvements: Codification Amendments in Response to the SEC&#8217;s Disclosure Update and Simplification Initiative&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;06&#8221;</em>) which incorporates certain SEC disclosure requirements into the Accounting Standards Codification. The effective date for each amendment in ASU&#160;<em style="font: inherit;">2023&#8209;06</em> will be the effective date of the removal of the disclosure requirement from Regulation&#160;S&#8209;X or Regulation&#160;S&#8209;K, with early adoption prohibited. The amendments should be applied prospectively. The Company does <em style="font: inherit;">not</em> expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> November 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;07,</em> &#8220;Segment Reporting (Topic&#160;<em style="font: inherit;">280</em>): Improvements to Reportable Segment Disclosures&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;07&#8221;</em>) which requires disclosure of incremental segment information, primarily through enhanced disclosures about significant segment expenses, on an annual and interim basis for all public entities. ASU&#160;<em style="font: inherit;">2023&#8209;07</em> will be applied retrospectively, and will be effective for the Company&#8217;s <em style="font: inherit;">2024</em> annual reporting, and for interim periods beginning in <em style="font: inherit;">2025,</em> with early adoption permitted. The Company does <em style="font: inherit;">not</em> expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> December 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;09,</em> &#8220;Income Taxes (Topic&#160;<em style="font: inherit;">740</em>): Improvements to Income Tax Disclosures&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;09&#8221;</em>) which improves the transparency, effectiveness, and comparability of income tax disclosures and allows investors to better assess, in their capital allocation decisions, how an entity&#8217;s worldwide operations and related tax risks and tax planning and operation opportunities affect its income tax rate and prospects for future cash flows. ASU&#160;<em style="font: inherit;">2023&#8209;09</em> will be applied prospectively, and will be effective for the Company&#8217;s <em style="font: inherit;">2025</em> annual reporting, with early adoption permitted. The Company is currently assessing the impact of ASU&#160;<em style="font: inherit;">2023&#8209;09</em> on its disclosures in the notes to the consolidated financial statements.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p></ix:nonNumeric><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">14</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:BusinessCombinationDisclosureTextBlock" id="c2569396" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">3.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>BUSINESS COMB</b><b>INATIONS:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Park Environmental Equipment,</b>&#160;<b>LLC</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">5,</em> <em style="font: inherit;">2021,</em> the Company completed the acquisition of <ix:nonFraction id="c107875930" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="Pure" name="us-gaap:BusinessAcquisitionPercentageOfVotingInterestsAcquired" scale="-2" format="ixt:num-dot-decimal" decimals="0">100</ix:nonFraction>% of Park Environmental Equipment,&#160;LLC (&#8220;ParkUSA&#8221;) for a purchase price of $<ix:nonFraction id="c107875931" contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="6" format="ixt:num-dot-decimal" decimals="-5">90.2</ix:nonFraction>&#160;million in cash, which is included in the Precast segment for all periods following the acquisition date. ParkUSA is a precast concrete and steel fabrication-based company that develops and manufactures water, wastewater, and environmental solutions. Operations continue with ParkUSA&#8217;s previous management and workforce at its <em style="font: inherit;">three</em> Texas manufacturing facilities located in Houston, Dallas, and San Antonio. This strategic acquisition provides a foothold into the water infrastructure technology market. As the Company employs similar operating capabilities at its existing facilities, it intends to explore strategic opportunities to expand ParkUSA&#8217;s value-added products within the organization.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes the purchase consideration and fair value of the assets acquired and liabilities assumed as of <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">5,</em> <em style="font: inherit;">2021</em> (in thousands):</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt 0pt 0pt 8pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock" id="c2569397" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Assets</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875046" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" scale="3" format="ixt:num-dot-decimal" decimals="-3">278</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Trade and other receivables</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875047" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,034</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Inventories</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875048" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,773</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Prepaid expenses and other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875049" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">293</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Property and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875050" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,076</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating lease right-of-use assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875051" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="nwpx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">58,301</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875052" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" scale="3" format="ixt:num-dot-decimal" decimals="-6">31,000</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Deferred income taxes</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875053" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">347</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total assets acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875054" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">122,102</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Liabilities</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Accounts payable</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875055" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,029</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Accrued liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875056" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="nwpx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,067</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875057" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="nwpx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">58,301</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total liabilities assumed</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875058" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">64,397</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875059" contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:num-dot-decimal" decimals="-3">32,519</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Total purchase consideration</b></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875060" contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationConsiderationTransferred1" scale="3" format="ixt:num-dot-decimal" decimals="-3">90,224</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The tangible and intangible assets acquired and liabilities assumed were recognized based on their estimated fair values on the acquisition date, with the excess purchase consideration recorded as goodwill. As a result of additional information obtained during the measurement period about facts and circumstances that existed as of the acquisition date, the Company recorded measurement period adjustments during the year ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2022</em> which resulted in a $<ix:nonFraction id="c107875937" contextRef="d_2022-01-01_2022-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:GoodwillPurchaseAccountingAdjustments" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.8</ix:nonFraction>&#160;million increase in goodwill and purchase consideration related to the settlement of working capital. The measurement period for the ParkUSA acquisition was complete as of <em style="font: inherit;"> September&#160;</em><em style="font: inherit;">30,</em> <em style="font: inherit;">2022.</em></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes the components of the intangible assets acquired and their estimated useful lives:</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock" id="c2569398" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="vertical-align: bottom;"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Estimated Useful Life</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Fair Value</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom;"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(In years) </b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(In thousands) </b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Customer relationships</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="c107875063" format="ixt-sec:duryear">10.0</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875064" contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FinitelivedIntangibleAssetsAcquired1" scale="3" format="ixt:num-dot-decimal" decimals="-5">19,800</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Trade names and trademarks</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="c107875065" format="ixt-sec:duryear">10.0</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875066" contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember" unitRef="USD" name="us-gaap:FinitelivedIntangibleAssetsAcquired1" scale="3" format="ixt:num-dot-decimal" decimals="-5">9,600</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Patents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="c107875067" format="ixt-sec:duryear">21.0</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875068" contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember" unitRef="USD" name="us-gaap:FinitelivedIntangibleAssetsAcquired1" scale="3" format="ixt:num-dot-decimal" decimals="-5">1,300</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Backlog</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-BacklogMember" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="c107875069" format="ixt-sec:duryear">0.6</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875070" contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-BacklogMember" unitRef="USD" name="us-gaap:FinitelivedIntangibleAssetsAcquired1" scale="3" format="ixt:num-dot-decimal" decimals="-5">300</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="c107875071" format="ixt-sec:duryear">10.4</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875072" contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:FinitelivedIntangibleAssetsAcquired1" scale="3" format="ixt:num-dot-decimal" decimals="-6">31,000</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Goodwill arose from the acquisition of an assembled workforce, expansion of product offerings, and management&#8217;s industry know-how, and is deductible for tax purposes.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">15</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">The Company incurred transaction costs associated with this acquisition of $<ix:nonFraction id="c107875941" contextRef="d_2023-01-01_2023-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationAcquisitionRelatedCosts" scale="6" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>, $<ix:nonFraction id="c107875942" contextRef="d_2022-01-01_2022-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationAcquisitionRelatedCosts" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;million, and $<ix:nonFraction id="c107875943" contextRef="d_2021-01-01_2021-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessCombinationAcquisitionRelatedCosts" scale="6" format="ixt:num-dot-decimal" decimals="-5">3.4</ix:nonFraction>&#160;million during the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em> and <em style="font: inherit;">2021</em>, respectively. These transaction costs are included in Selling, general, and administrative expense in the Consolidated Statements of Operations.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Unaudited Pro Forma Disclosures</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following unaudited pro forma summary presents the consolidated results of the Company as if the acquisition of ParkUSA had occurred on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1,</em> <em style="font: inherit;">2020</em> (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:BusinessAcquisitionProFormaInformationTextBlock" id="c2569399" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding-bottom: 1px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Year Ended December 31, 2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Net sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875074" contextRef="d_2021-01-01_2021-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessAcquisitionsProFormaRevenue" scale="3" format="ixt:num-dot-decimal" decimals="-3">384,872</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875075" contextRef="d_2021-01-01_2021-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember" unitRef="USD" name="us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-4">15,780</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">This unaudited pro forma consolidated financial data is included only for the purpose of illustration and does <em style="font: inherit;">not</em> necessarily indicate what the operating results would have been if the acquisitions of ParkUSA had occurred on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1</em> of the year prior to the acquisition. Moreover, this information is <em style="font: inherit;">not</em> indicative of what the Company&#8217;s future operating results will be. The information prior to the acquisition is included based on prior accounting records maintained by ParkUSA. The pro forma amounts have been calculated after applying the Company&#8217;s accounting policies and adjusting the results of ParkUSA to reflect the additional depreciation and amortization that would have been charged assuming the fair value adjustments to property and equipment and intangible assets had been applied on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1</em> of the year prior to the acquisition. Adjustments also include an increase of interest expense as if the Company&#8217;s debt obtained in connection with the acquisitions of ParkUSA had been outstanding since <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1</em> of the year prior to the acquisition. The pro forma results for the year ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2021</em> include nonrecurring adjustments to add back the transaction costs incurred and the expense related to the revaluation of inventory acquired in those periods, since those costs are reflected in the preceding year on a pro forma basis. The provision for income taxes has also been adjusted for all periods, based upon the foregoing adjustments to historical results.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:InventoryDisclosureTextBlock" id="c2569400" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">4.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>INVENTORIES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Inventories consist of the following (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" id="c2569401" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Raw materials</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875080" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:InventoryRawMaterialsNetOfReserves" scale="3" format="ixt:num-dot-decimal" decimals="-4">68,110</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875081" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:InventoryRawMaterialsNetOfReserves" scale="3" format="ixt:num-dot-decimal" decimals="-3">47,978</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Work-in-process</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875082" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:InventoryWorkInProcessNetOfReserves" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,912</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875083" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:InventoryWorkInProcessNetOfReserves" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,114</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Finished goods</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875084" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:InventoryFinishedGoodsNetOfReserves" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,911</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875085" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:InventoryFinishedGoodsNetOfReserves" scale="3" format="ixt:num-dot-decimal" decimals="-3">15,773</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Supplies</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875086" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:InventorySuppliesNetOfReserves" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,296</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875087" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:InventorySuppliesNetOfReserves" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,164</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total inventories</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875088" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">91,229</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875089" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">71,029</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">16</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock" id="c2569402" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">5.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>PROPERTY AND EQUIPMENT:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Property and equipment, net consists of the following (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:PropertyPlantAndEquipmentTextBlock" id="c2569403" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgb(255, 255, 255);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Land and improvements</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875094" contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">25,064</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875095" contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">23,981</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Buildings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875096" contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">54,036</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875097" contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">51,389</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Leasehold improvements</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875098" contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,182</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875099" contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,182</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Machinery and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875100" contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">155,278</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875101" contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">149,971</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Equipment under finance lease</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875102" contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentUnderFinanceLeaseMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,519</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875103" contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentUnderFinanceLeaseMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,849</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875104" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">246,079</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875105" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">232,372</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Less accumulated depreciation and amortization</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875106" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">126,359</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875107" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">117,856</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875108" contextRef="i_2023-12-31" unitRef="USD" name="nwpx:PropertyPlantAndEquipmentNetExcludingConstructionInProgress" scale="3" format="ixt:num-dot-decimal" decimals="-4">119,720</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875109" contextRef="i_2022-12-31" unitRef="USD" name="nwpx:PropertyPlantAndEquipmentNetExcludingConstructionInProgress" scale="3" format="ixt:num-dot-decimal" decimals="-3">114,516</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Construction in progress</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875110" contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-ConstructionInProgressMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">24,235</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875111" contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-ConstructionInProgressMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:num-dot-decimal" decimals="-4">18,650</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Property and equipment, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875112" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">143,955</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875113" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">133,166</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">All property and equipment is located in the United States, except for $<ix:nonFraction id="c107875960" contextRef="i_2023-12-31_StatementGeographicalAxis-MX" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="6" format="ixt:num-dot-decimal" decimals="-5">18.2</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107875961" contextRef="i_2022-12-31_StatementGeographicalAxis-MX" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="6" format="ixt:num-dot-decimal" decimals="-6">19.0</ix:nonFraction>&#160;million of net property and equipment which is located in Mexico as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock" id="c2569404" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">6.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>GOODWILL AND INTANGIBLE ASSETS:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Goodwill</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has recorded goodwill of $<ix:nonFraction id="c107875966" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:Goodwill" scale="6" format="ixt:num-dot-decimal" decimals="-5">55.5</ix:nonFraction>&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em> in connection with its business acquisitions within the Precast segment. The Company performed its annual goodwill impairment test as of <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">30,</em> <em style="font: inherit;">2023,</em> utilizing a qualitative analysis, and did <em style="font: inherit;">not</em> identify any potential impairment. It is possible that future changes in circumstances, judgments, or assumptions, including prolonged economic weakness or unexpected significant declines in Precast operating results or projections, <em style="font: inherit;"> may </em>result in goodwill impairment charges in the future.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Intangible Assets</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Intangible assets consist of the following (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" id="c2569405" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Gross Carrying</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Accumulated</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Intangible</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Amount</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Amortization</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Assets, Net</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2023</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Customer relationships</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875120" contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">27,831</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875121" contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,315</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875122" contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">20,516</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Trade names and trademarks</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875123" contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,825</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875124" contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,734</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875125" contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,091</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Patents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875126" contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,627</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875127" contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-4">160</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875128" contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,467</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875129" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">42,283</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875130" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,209</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875131" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,074</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2022</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Customer relationships</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875132" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">29,209</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875133" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,845</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875134" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">23,364</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Trade names and trademarks</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875135" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,825</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875136" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-4">2,490</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875137" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,335</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Patents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875138" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,627</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875139" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">81</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875140" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,546</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875141" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">329</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875142" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-4">310</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875143" contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">19</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875144" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-4">43,990</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875145" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,726</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875146" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">35,264</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">17</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The estimated amortization expense for each of the next <em style="font: inherit;">five</em> years and thereafter is as follows (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" id="c2569406" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Year ending December 31,</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875149" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,033</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2025</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875150" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,033</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2026</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875151" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,033</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2027</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875152" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,033</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2028</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875153" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,033</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Thereafter</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875154" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,909</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total amortization expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875155" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,074</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:LongTermDebtTextBlock" id="c2569407" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b><em style="font: inherit;">7.</em></b></p> </td><td style="width: auto;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>CURRENT DEBT:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Interim Funding Agreement dated <em style="font: inherit;"> August&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2022</em> with Wells Fargo Equipment Finance, Inc. (&#8220;WFEF&#8221;), as amended <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">23,</em> <em style="font: inherit;">2023,</em> <em style="font: inherit;"> March&#160;</em><em style="font: inherit;">15,</em> <em style="font: inherit;">2023,</em> <em style="font: inherit;"> July&#160;</em><em style="font: inherit;">21,</em> <em style="font: inherit;">2023,</em> and <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2023</em> (together, the &#8220;IFA&#8221;), provides for aggregate interim funding advances up to $<ix:nonFraction id="c107875986" contextRef="i_2022-08-02_DebtInstrumentAxis-InterimFundingAgreementifaMember" unitRef="USD" name="us-gaap:DebtInstrumentFaceAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">10.8</ix:nonFraction>&#160;million of equipment purchased for a new reinforced concrete pipe mill, to be converted into a term loan upon final delivery and acceptance of the financed equipment. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the outstanding balance of the IFA was $<ix:nonFraction id="c107875990" contextRef="i_2023-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember" unitRef="USD" name="us-gaap:ShortTermBorrowings" scale="6" format="ixt:num-dot-decimal" decimals="-5">10.8</ix:nonFraction>&#160;million, which is classified as a current liability since there is <em style="font: inherit;">not</em> a firm commitment for long-term debt financing. The IFA bore interest at the term Secured Overnight Finance Rate (&#8220;SOFR&#8221;) plus <ix:nonFraction id="c107875992" contextRef="d_2022-01-01_2022-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="4">1.75</ix:nonFraction>% as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2022</em>. Effective <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2023,</em> the IFA bears interest at the SOFR Average plus <ix:nonFraction id="c107875997" contextRef="d_2023-11-02_2023-11-02_DebtInstrumentAxis-InterimFundingAgreementifaMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="2">2.00</ix:nonFraction>%. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the weighted-average interest rate for outstanding borrowings was <ix:nonFraction id="c107876001" contextRef="i_2023-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember" unitRef="Pure" name="us-gaap:DebtWeightedAverageInterestRate" scale="-2" format="ixt:num-dot-decimal" decimals="4">7.08</ix:nonFraction>% and <ix:nonFraction id="c107876002" contextRef="i_2022-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember" unitRef="Pure" name="us-gaap:DebtWeightedAverageInterestRate" scale="-2" format="ixt:num-dot-decimal" decimals="4">5.87</ix:nonFraction>%, respectively. The IFA requires monthly payments of accrued interest and grants a security interest in the equipment to WFEF. Effective <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2023,</em> the IFA requires the Company to maintain a consolidated senior leverage ratio <em style="font: inherit;">no</em> greater than <ix:nonFraction id="c107876006" contextRef="i_2023-11-02_DebtInstrumentAxis-InterimFundingAgreementifaMember" unitRef="Pure" name="nwpx:MaximumSeniorLeverageRatio" scale="0" format="ixt:num-dot-decimal" decimals="INF">3.00</ix:nonFraction> to <em style="font: inherit;">1.00</em> (subject to certain exceptions) and a minimum consolidated earnings before interest, taxes, depreciation, and amortization (&#8220;EBITDA&#8221;) (as defined in the IFA) of at least $<ix:nonFraction id="c107876008" contextRef="i_2023-11-02_DebtInstrumentAxis-InterimFundingAgreementifaMember" unitRef="USD" name="nwpx:DebtInstrumentCovenantMinimumEbitda" scale="6" format="ixt:num-dot-decimal" decimals="-6">35</ix:nonFraction>&#160;million for the <em style="font: inherit;">four</em> consecutive fiscal quarters most recently ended. The Company was in compliance with its financial covenants as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:DebtDisclosureTextBlock" id="c2569408" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">8.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>CREDIT AGREEMENT:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Credit Agreement dated <em style="font: inherit;"> June&#160;</em><em style="font: inherit;">30,</em> <em style="font: inherit;">2021</em> with Wells Fargo Bank, National Association (&#8220;Wells Fargo&#8221;), as administrative agent, and the lenders from time to time party thereto, including the initial sole lender, Wells Fargo (the &#8220;Lenders&#8221;), as amended by the Incremental Amendment dated <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">22,</em> <em style="font: inherit;">2021,</em> the Second Amendment to Credit Agreement dated <em style="font: inherit;"> April&#160;</em><em style="font: inherit;">29,</em> <em style="font: inherit;">2022,</em> and the Third Amendment to Credit Agreement dated <em style="font: inherit;"> June&#160;</em><em style="font: inherit;">29,</em> <em style="font: inherit;">2023</em> (together, the &#8220;Amended Credit Agreement&#8221;), provides for a revolving loan, swingline loan, and letters of credit in the aggregate amount of up to $<ix:nonFraction id="c107876021" contextRef="i_2021-10-22_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-6">125</ix:nonFraction>&#160;million (&#8220;Revolver Commitment&#8221;), with an option for the Company to increase that amount by $<ix:nonFraction id="c107876022" contextRef="d_2023-01-01_2023-12-31_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityIncreaseDecreaseForPeriodNet" scale="6" format="ixt:num-dot-decimal" decimals="-7">50</ix:nonFraction>&#160;million, subject to provisions of the Amended Credit Agreement. The Amended Credit Agreement will expire, and all obligations outstanding will mature, on <em style="font: inherit;"> June&#160;</em><em style="font: inherit;">29,</em> <em style="font: inherit;">2028.</em> The Company <em style="font: inherit;"> may </em>prepay outstanding amounts at its discretion without penalty at any time, subject to applicable notice requirements. In conjunction with entering into the Credit Agreement on <em style="font: inherit;"> June&#160;</em><em style="font: inherit;">30,</em> <em style="font: inherit;">2021,</em> the Company terminated the Credit Agreement with Wells Fargo dated <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">25,</em> <em style="font: inherit;">2018,</em> as amended on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2020</em> by the Consent and Amendment <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">1</em> to Credit Agreement with Wells Fargo (together, the &#8220;Former Credit Agreement&#8221;), and all outstanding debt under the Former Credit Agreement, including long-term debt, was repaid.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Amended Credit Agreement contains customary representations and warranties, as well as customary affirmative and negative covenants, events of default, and indemnification provisions in favor of the Lenders. The negative covenants include restrictions regarding the incurrence of liens and indebtedness, annual capital expenditures, certain investments, acquisitions, and dispositions, and other matters, all subject to certain exceptions. The Amended Credit Agreement requires the Company to regularly provide financial information to Wells Fargo and to maintain a consolidated senior leverage ratio <em style="font: inherit;">no</em> greater than <ix:nonFraction id="c107876034" contextRef="i_2021-10-22_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="Pure" name="nwpx:MaximumSeniorLeverageRatioRequirement" scale="0" format="ixt:num-dot-decimal" decimals="INF">3.00</ix:nonFraction> to <em style="font: inherit;">1.00</em> (subject to certain exceptions) and a minimum consolidated EBITDA (as defined in the Amended Credit Agreement) of at least $<ix:nonFraction id="c107876036" contextRef="d_2021-10-22_2021-10-22_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="USD" name="nwpx:DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization" scale="6" format="ixt:num-dot-decimal" decimals="-6">35</ix:nonFraction>&#160;million for the <em style="font: inherit;">four</em> consecutive fiscal quarters most recently ended. Pursuant to the Amended Credit Agreement, the Company has also agreed that it will <em style="font: inherit;">not</em> sell, assign, or otherwise dispose or encumber, any of its owned real property. The occurrence of an event of default could result in the acceleration of the obligations under the Amended Credit Agreement. The Company was in compliance with its financial covenants as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company&#8217;s obligations under the Amended Credit Agreement are secured by a senior security interest in substantially all of the Company&#8217;s and its subsidiaries&#8217; assets.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">18</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Interest expense from revolving loan borrowings, current debt, long-term debt, and finance leases was $<ix:nonFraction id="c107876042" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.9</ix:nonFraction>&#160;million, net of amounts capitalized of $<ix:nonFraction id="c107876043" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:InterestCostsCapitalized" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.5</ix:nonFraction>&#160;million&#160;in <em style="font: inherit;">2023</em>, $<ix:nonFraction id="c107876045" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" scale="6" format="ixt:num-dot-decimal" decimals="-5">3.6</ix:nonFraction>&#160;million, net of a nominal amount capitalized in <em style="font: inherit;">2022</em>, and $<ix:nonFraction id="c107876047" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.2</ix:nonFraction>&#160;million, net of amounts capitalized of $<ix:nonFraction id="c107876048" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:InterestCostsCapitalized" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;million in <em style="font: inherit;">2021.</em></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Line of Credit (Revolving and Swingline Loans)</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> under the Amended Credit Agreement, the Company had $<ix:nonFraction id="c107876052" contextRef="i_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="USD" name="us-gaap:LineOfCredit" scale="6" format="ixt:num-dot-decimal" decimals="-5">54.5</ix:nonFraction>&#160;million of outstanding revolving loan borrowings, $<ix:nonFraction id="c107876053" contextRef="i_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="USD" name="us-gaap:LettersOfCreditOutstandingAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.1</ix:nonFraction>&#160;million of outstanding letters of credit, and additional borrowing capacity of approximately $<ix:nonFraction id="c107876054" contextRef="i_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-6">69</ix:nonFraction>&#160;million. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2022</em> under the Amended Credit Agreement, the Company had $<ix:nonFraction id="c107876057" contextRef="i_2022-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="USD" name="us-gaap:LineOfCredit" scale="6" format="ixt:num-dot-decimal" decimals="-5">83.7</ix:nonFraction>&#160;million of outstanding revolving loan borrowings and $<ix:nonFraction id="c107876058" contextRef="i_2022-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="USD" name="us-gaap:LettersOfCreditOutstandingAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.1</ix:nonFraction>&#160;million of outstanding letters of credit. Revolving loans under the Amended Credit Agreement bear interest at rates related to, at the Company&#8217;s option and subject to the provisions of the Amended Credit Agreement, either: (i)&#160;Base Rate (as defined in the Amended Credit Agreement) plus the Applicable Margin&#894; (ii)&#160;Adjusted Term SOFR (as defined in the Amended Credit Agreement) plus the Applicable Margin&#894; or (iii)&#160;Adjusted Daily Simple SOFR (as defined in the Amended Credit Agreement) plus the Applicable Margin. The &#8220;Applicable Margin&#8221; is <ix:nonFraction id="c107876059" contextRef="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MinimumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="4">1.75</ix:nonFraction>% to <ix:nonFraction id="c107876060" contextRef="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MaximumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="4">2.35</ix:nonFraction>%, depending on the Company&#8217;s Consolidated Senior Leverage Ratio (as defined in the Amended Credit Agreement) and the interest rate option chosen. Interest on outstanding revolving loans is payable monthly. Swingline loans under the Amended Credit Agreement bear interest at the Base Rate plus the Applicable Margin. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the weighted-average interest rate for outstanding borrowings was <ix:nonFraction id="c107876064" contextRef="i_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="Pure" name="us-gaap:DebtWeightedAverageInterestRate" scale="-2" format="ixt:num-dot-decimal" decimals="4">7.43</ix:nonFraction>% and <ix:nonFraction id="c107876065" contextRef="i_2022-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember" unitRef="Pure" name="us-gaap:DebtWeightedAverageInterestRate" scale="-2" format="ixt:num-dot-decimal" decimals="4">6.07</ix:nonFraction>%, respectively. The Amended Credit Agreement requires the payment of a commitment fee of between <ix:nonFraction id="c107876066" contextRef="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MinimumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember" unitRef="Pure" name="us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" scale="-2" format="ixt:num-dot-decimal" decimals="3">0.30</ix:nonFraction>% and <ix:nonFraction id="c107876067" contextRef="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MaximumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember" unitRef="Pure" name="us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" scale="-2" format="ixt:num-dot-decimal" decimals="3">0.40</ix:nonFraction>%, based on the amount by which the Revolver Commitment exceeds the average daily balance of outstanding borrowings (as defined in the Amended Credit Agreement). Such fee is payable monthly in arrears. The Company is also obligated to pay additional fees customary for credit facilities of this size and type.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:LesseeLeaseDisclosureTextBlock" id="c2569409" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"><b><em style="font: inherit;">9.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"><b>LEASES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes the Company&#8217;s leases recorded on the Consolidated Balance Sheets (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:LesseeLeaseAssetsAndLiabilitiesTableTextBlock" id="c2569410" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Right-of-use assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases, net, included in Property and equipment (1)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875161" contextRef="i_2023-12-31_BalanceSheetLocationAxis-PropertyAndEquipmentMember" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,092</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875162" contextRef="i_2022-12-31_BalanceSheetLocationAxis-PropertyAndEquipmentMember" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,618</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875163" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">88,155</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875164" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">93,124</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total right-of-use assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875165" contextRef="i_2023-12-31" unitRef="USD" name="nwpx:LeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">95,247</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875166" contextRef="i_2022-12-31" unitRef="USD" name="nwpx:LeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">95,742</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Lease liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875167" contextRef="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" unitRef="USD" name="us-gaap:FinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,481</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875168" contextRef="i_2022-12-31_BalanceSheetLocationAxis-AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" unitRef="USD" name="us-gaap:FinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,037</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875169" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">90,216</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875170" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">94,174</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875171" contextRef="i_2023-12-31" unitRef="USD" name="nwpx:LeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">97,697</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875172" contextRef="i_2022-12-31" unitRef="USD" name="nwpx:LeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">97,211</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 27pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">(<em style="font: inherit;">1</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Finance lease right-of-use assets are presented net of accumulated amortization of $<ix:nonFraction id="c107876070" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAccumulatedAmortization" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.4</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107876071" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAccumulatedAmortization" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.2</ix:nonFraction>&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Lease cost consists of the following (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:LeaseCostTableTextBlock" id="c2569411" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Finance lease cost:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Amortization of right-of-use assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875181" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">795</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875182" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">577</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875183" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">413</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Interest on lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875184" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">266</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875185" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">148</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875186" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-4">90</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Operating lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875187" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:OperatingLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,765</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875188" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:OperatingLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-4">7,770</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875189" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:OperatingLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,627</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Short-term lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875190" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:ShortTermLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,402</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875191" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:ShortTermLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-6">1,000</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875192" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:ShortTermLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">993</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Variable lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875193" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:VariableLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">313</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875194" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:VariableLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">251</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875195" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:VariableLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">158</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875196" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:LeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,541</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875197" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:LeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,746</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875198" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:LeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,281</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">19</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The future maturities of lease liabilities as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> are as follows (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:LesseeLiabilityMaturityTableTextBlock" id="c2569412" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Finance Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Operating Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875202" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,212</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875203" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,874</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2025</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875204" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,923</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875205" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,913</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2026</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875206" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,847</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875207" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,583</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2027</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875208" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,614</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875209" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,192</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2028</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875210" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,147</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875211" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,308</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Thereafter</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875212" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875213" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" scale="3" format="ixt:num-dot-decimal" decimals="-3">76,453</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total lease payments</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875214" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDue" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,743</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875215" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue" scale="3" format="ixt:num-dot-decimal" decimals="-3">109,323</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Amount representing interest</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875216" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,262</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875217" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">19,107</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Present value of lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875218" contextRef="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" unitRef="USD" name="us-gaap:FinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,481</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875219" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">90,216</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Current portion of lease liabilities (1)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875220" contextRef="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilityMember" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,721</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875221" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,933</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Long-term lease liabilities (2)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875222" contextRef="i_2023-12-31_BalanceSheetLocationAxis-OtherLiabilitiesMember" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-4">5,760</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875223" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">85,283</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 18pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">(<em style="font: inherit;">1</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Current portion of finance lease liabilities are included in Accrued liabilities.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 18pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">(<em style="font: inherit;">2</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Long-term finance lease liabilities, less current portion are included in Other long-term liabilities.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The following table summarizes the lease terms and discount rates for the lease liabilities:</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" id="c2569413" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Weighted-average remaining lease term (years)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="i_2023-12-31" name="us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1" id="c107875228" format="ixt-sec:duryear">3.90</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="i_2022-12-31" name="us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1" id="c107875229" format="ixt-sec:duryear">3.52</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="i_2023-12-31" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" id="c107875230" format="ixt-sec:duryear">16.73</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="i_2022-12-31" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" id="c107875231" format="ixt-sec:duryear">17.83</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Weighted-average discount rate</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875232" contextRef="i_2023-12-31" unitRef="Pure" name="us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent" scale="-2" format="ixt:num-dot-decimal" decimals="4">6.93</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875233" contextRef="i_2022-12-31" unitRef="Pure" name="us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent" scale="-2" format="ixt:num-dot-decimal" decimals="4">5.44</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875234" contextRef="i_2023-12-31" unitRef="Pure" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2" format="ixt:num-dot-decimal" decimals="4">2.17</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875235" contextRef="i_2022-12-31" unitRef="Pure" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2" format="ixt:num-dot-decimal" decimals="4">2.19</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The following table presents other information related to the operating and finance leases (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" id="c2569414" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Cash paid for amounts included in the measurement of lease liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating cash flows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875244" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestPaymentOnLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">266</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875245" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestPaymentOnLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">148</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875246" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestPaymentOnLiability" scale="3" format="ixt:num-dot-decimal" decimals="-4">90</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating cash flows from operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875247" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:OperatingLeasePayments" scale="3" format="ixt:num-dot-decimal" decimals="-4">6,930</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875248" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:OperatingLeasePayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,818</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875249" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:OperatingLeasePayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,142</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financing cash flows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875250" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">826</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875251" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">597</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875252" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">415</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Right-of-use assets obtained in exchange for finance lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875253" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-4">5,270</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875254" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,466</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875255" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">853</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Right-of-use assets obtained in exchange for operating lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875256" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">952</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875257" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">568</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875258" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">16,043</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:FairValueDisclosuresTextBlock" id="c2569415" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">10.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>FAIR VALUE MEASUREMENTS:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Fair value is defined as the price that would be received to sell an asset or paid to transfer a liability, in the principal or most advantageous market for the asset or liability, in an orderly transaction between market participants at the measurement date.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The authoritative guidance establishes a fair value hierarchy that prioritizes the inputs to valuation techniques used to measure fair value into <em style="font: inherit;">three</em> broad levels. These levels are: Level&#160;<em style="font: inherit;">1</em> (inputs are quoted prices in active markets for identical assets or liabilities); Level&#160;<em style="font: inherit;">2</em> (inputs are other than quoted prices that are observable, either directly or indirectly through corroboration with observable market data); and Level&#160;<em style="font: inherit;">3</em> (inputs are unobservable, with little or <em style="font: inherit;">no</em> market data that exists, such as internal financial forecasts). The Company is required to maximize the use of observable inputs and minimize the use of unobservable inputs when measuring fair value.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">20</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes information regarding the Company&#8217;s financial assets and liabilities that are measured at fair value on a recurring basis (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" id="c2569416" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Level 1</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Level 2</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Level 3</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2023</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Deferred compensation plan</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875264" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember" unitRef="USD" name="us-gaap:DeferredCompensationPlanAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,912</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875265" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member" unitRef="USD" name="us-gaap:DeferredCompensationPlanAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,391</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875266" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member" unitRef="USD" name="us-gaap:DeferredCompensationPlanAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">521</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875267" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member" unitRef="USD" name="us-gaap:DeferredCompensationPlanAssets" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875268" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">42</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875269" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875270" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">42</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875271" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Interest rate swaps</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875272" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">326</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875273" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875274" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">326</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875275" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt; text-indent: -9pt;">Total financial assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875276" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:num-dot-decimal" decimals="-4">4,280</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875277" contextRef="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,391</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875278" contextRef="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:num-dot-decimal" decimals="-3">889</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875279" contextRef="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875280" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:DerivativeLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">115</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875281" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member" unitRef="USD" name="us-gaap:DerivativeLiabilities" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875282" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member" unitRef="USD" name="us-gaap:DerivativeLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">115</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875283" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member" unitRef="USD" name="us-gaap:DerivativeLiabilities" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2022</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Deferred compensation plan</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875284" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember" unitRef="USD" name="us-gaap:DeferredCompensationPlanAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,587</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875285" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member" unitRef="USD" name="us-gaap:DeferredCompensationPlanAssets" scale="3" format="ixt:num-dot-decimal" decimals="-4">3,090</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875286" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member" unitRef="USD" name="us-gaap:DeferredCompensationPlanAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">497</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875287" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member" unitRef="USD" name="us-gaap:DeferredCompensationPlanAssets" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875288" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">728</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875289" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875290" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">728</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875291" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Interest rate swaps</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875292" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">862</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875293" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875294" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">862</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875295" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member" unitRef="USD" name="us-gaap:DerivativeAssets" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt; text-indent: -9pt;">Total financial assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875296" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,177</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875297" contextRef="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:num-dot-decimal" decimals="-4">3,090</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875298" contextRef="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,087</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875299" contextRef="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875300" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:DerivativeLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-4">80</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875301" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member" unitRef="USD" name="us-gaap:DerivativeLiabilities" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875302" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member" unitRef="USD" name="us-gaap:DerivativeLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-4">80</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875303" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member" unitRef="USD" name="us-gaap:DerivativeLiabilities" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The deferred compensation plan assets consist of cash and several publicly traded stock and bond mutual funds, valued using quoted market prices in active markets, classified as Level&#160;<em style="font: inherit;">1</em> within the fair value hierarchy, as well as guaranteed investment contracts, valued at principal plus interest credited at contract rates, classified as Level&#160;<em style="font: inherit;">2</em> within the fair value hierarchy. Deferred compensation plan assets are included within Other assets in the Consolidated Balance Sheets.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The foreign currency forward contracts and interest rate swaps are derivatives valued using various pricing models or discounted cash flow analyses that incorporate observable market parameters, such as interest rate yield curves and currency rates, and are classified as Level&#160;<em style="font: inherit;">2</em> within the fair value hierarchy. Derivative valuations incorporate credit risk adjustments that are necessary to reflect the probability of default by the counterparty or the Company. The foreign currency forward contracts and interest rate swaps are presented at their gross fair values. Foreign currency forward contract and interest rate swap assets are included within Prepaid expenses and other and foreign currency forward contract liabilities are included within Accrued liabilities in the Consolidated Balance Sheets.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The net carrying amounts of cash and cash equivalents, trade and other receivables, accounts payable, accrued liabilities, and current debt approximate fair value due to the short-term nature of these instruments. The net carrying amount of the borrowings on the line of credit approximates fair value due to its variable interest rate based on market.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" id="c2569417" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">11.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>DERIVATIVE INSTRUMENTS AND HEDGING ACTIVITIES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">For each derivative entered into in which the Company seeks to obtain cash flow hedge accounting treatment, the Company formally documents all relationships between hedging instruments and hedged items, as well as its risk management objective and strategy for undertaking the hedge transaction, the nature of the risk being hedged, how the hedging instrument&#8217;s effectiveness in offsetting the hedged risk will be assessed prospectively and retrospectively, and a description of the method of measuring ineffectiveness. This process includes linking all derivatives to specific firm commitments or forecasted transactions and designating the derivatives as cash flow hedges. The Company also formally assesses, both at the hedge&#8217;s inception and on an ongoing basis, whether the derivatives that are used in hedging transactions are highly effective in offsetting changes in cash flows of hedged items. The effective portion of these hedged items is reflected in Unrealized gain (loss) on cash flow hedges on the Consolidated Statements of Comprehensive Income. If it is determined that a derivative is <em style="font: inherit;">not</em> highly effective, or that it has ceased to be a highly effective hedge, the Company is required to discontinue hedge accounting with respect to that derivative prospectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">21</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the total notional amount of the foreign currency forward contracts was $<ix:nonFraction id="c107876095" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember" unitRef="USD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">5.1</ix:nonFraction>&#160;million (CAD$<ix:nonFraction id="c107876096" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember" unitRef="CAD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">6.7</ix:nonFraction>&#160;million) and $<ix:nonFraction id="c107876097" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember" unitRef="USD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.2</ix:nonFraction>&#160;million (EUR&#8364;<ix:nonFraction id="c107876098" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember" unitRef="EUR" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.1</ix:nonFraction>&#160;million), which included $<ix:nonFraction id="c107876099" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember" unitRef="USD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.9</ix:nonFraction>&#160;million (CAD$<ix:nonFraction id="c107876100" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember" unitRef="CAD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">6.4</ix:nonFraction>&#160;million) and $<ix:nonFraction id="c107876101" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-NondesignatedMember" unitRef="USD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.2</ix:nonFraction>&#160;million (EUR&#8364;<ix:nonFraction id="c107876102" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-NondesignatedMember" unitRef="EUR" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.1</ix:nonFraction>&#160;million) of foreign currency forward contracts <em style="font: inherit;">not</em> designated as cash flow hedges. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2022</em>, the total notional amount of the foreign currency forward contracts was $<ix:nonFraction id="c107876106" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember" unitRef="USD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">17.1</ix:nonFraction>&#160;million (CAD$<ix:nonFraction id="c107876107" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember" unitRef="CAD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">23.2</ix:nonFraction>&#160;million) and $<ix:nonFraction id="c107876108" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember" unitRef="USD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.1</ix:nonFraction>&#160;million (EUR&#8364;<ix:nonFraction id="c107876109" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember" unitRef="EUR" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.1</ix:nonFraction>&#160;million), which included $<ix:nonFraction id="c107876110" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember" unitRef="USD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.3</ix:nonFraction>&#160;million (CAD$<ix:nonFraction id="c107876111" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember" unitRef="CAD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.4</ix:nonFraction>&#160;million) of foreign currency forward contracts <em style="font: inherit;">not</em> designated as cash flow hedges. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company&#8217;s foreign currency forward contracts mature at various dates through <em style="font: inherit;"> April 2025 </em>and are subject to an enforceable master netting arrangement.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has entered into interest rate swaps which effectively convert a portion of its variable-rate debt to fixed-rate debt, and are designated as cash flow hedges. The Company receives floating interest payments monthly based on SOFR and pays a fixed rate of <ix:nonFraction id="c107876115" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember" unitRef="Pure" name="us-gaap:DerivativeFixedInterestRate" scale="-2" format="ixt:num-dot-decimal" decimals="5">1.941</ix:nonFraction>% to the counterparty on the total notional amount of $<ix:nonFraction id="c107876116" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember" unitRef="USD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">6.7</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107876117" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember" unitRef="USD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">26.7</ix:nonFraction>&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively, which amortizes ratably on a monthly basis to <em style="font: inherit;">zero</em> by the <em style="font: inherit;"> April 2024 </em>maturity date.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On <em style="font: inherit;"> August&#160;</em><em style="font: inherit;">9,</em> <em style="font: inherit;">2022,</em> the Company entered into an interest rate swap transaction which began <em style="font: inherit;"> April&#160;</em><em style="font: inherit;">3,</em> <em style="font: inherit;">2023.</em> The Company receives floating interest payments monthly based on the SOFR Average <em style="font: inherit;">30</em>&#160;day and pays a fixed rate of <ix:nonFraction id="c107876127" contextRef="i_2023-04-03_DerivativeInstrumentRiskAxis-The296InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember" unitRef="Pure" name="us-gaap:DerivativeFixedInterestRate" scale="-2" format="ixt:num-dot-decimal" decimals="4">2.96</ix:nonFraction>% to the counterparty on the total notional amount of $<ix:nonFraction id="c107876128" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-The296InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember" unitRef="USD" name="us-gaap:DerivativeNotionalAmount" scale="6" format="ixt:num-dot-decimal" decimals="-6">13.0</ix:nonFraction>&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, which amortizes ratably on a monthly basis to <em style="font: inherit;">zero</em> by the <em style="font: inherit;"> April 2028 </em>maturity date.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes the gains (losses) recognized on derivatives in the Consolidated Financial Statements (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" id="c2569418" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Foreign currency forward contracts:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Net sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875316" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">708</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875317" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:num-dot-decimal" decimals="-4">660</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875318" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">9</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Property and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(<ix:nonFraction id="c107875319" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">109</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(<ix:nonFraction id="c107875320" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">680</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107875321" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Interest rate swaps:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Interest expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875322" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">719</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875323" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">39</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875324" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875325" contextRef="d_2023-01-01_2023-12-31_HedgingDesignationAxis-NondesignatedMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">98</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875326" contextRef="d_2022-01-01_2022-12-31_HedgingDesignationAxis-NondesignatedMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">19</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875327" contextRef="d_2021-01-01_2021-12-31_HedgingDesignationAxis-NondesignatedMember" unitRef="USD" name="us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">9</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, unrealized pretax gains (losses) on outstanding cash flow hedges in Accumulated other comprehensive loss was $<ix:nonFraction id="c107876134" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.3</ix:nonFraction>&#160;million, of which approximately $<ix:nonFraction id="c107876135" contextRef="d_2023-01-01_2023-12-31_ReclassificationTypeAxis-ReclassifiedToNetSalesMember" unitRef="USD" name="us-gaap:CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths" scale="6" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction> and $<ix:nonFraction id="c107876136" contextRef="d_2023-01-01_2023-12-31_ReclassificationTypeAxis-ReclassifiedToInterestExpenseMember" unitRef="USD" name="us-gaap:CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.3</ix:nonFraction>&#160;million are expected to be reclassified to Net sales and Interest expense, respectively, within the next <em style="font: inherit;">twelve</em> months as a result of underlying hedged transactions also being recorded in these line items. See Note&#160;<em style="font: inherit;">18</em> &#8220;Accumulated Other Comprehensive Loss&#8221; for additional quantitative information regarding foreign currency forward contract and interest rate swap gains and losses.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:StockholdersEquityNoteDisclosureTextBlock" id="c2569419" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b><em style="font: inherit;">12.</em></b></p> </td><td style="width: auto;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>STOCKHOLDERS</b>&#8217; <b>EQUITY:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><i>At-the-Market Offering</i></b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On <em style="font: inherit;"> September&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2022,</em> the Company entered into an Open Market Sale Agreement (the &#8220;At-the-Market Offering&#8221;) with Jefferies LLC (&#8220;Jefferies&#8221;) which provided for the issuance and sale of shares of its common stock, par value $<ix:nonFraction id="c107876142" contextRef="i_2022-09-22" unitRef="USDPerShare" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.01</ix:nonFraction> per share, having aggregate offering sales proceeds of up to $<ix:nonFraction id="c107876143" contextRef="i_2022-09-02_SubsidiarySaleOfStockAxis-AtthemarketOfferingMember" unitRef="USD" name="nwpx:EquityOfferingMaximumOfferingAmount" scale="6" format="ixt:num-dot-decimal" decimals="-7">50</ix:nonFraction>&#160;million from time to time through Jefferies as its sales agent. On <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">30,</em> <em style="font: inherit;">2023,</em> the Company provided written notice terminating the Open Market Sale Agreement in accordance with its terms. <em style="font: inherit;">No</em> proceeds were raised under the At-the-Market Offering during the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> or <em style="font: inherit;">2022</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><i>Share Repurchase Program</i></b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2023,</em> the Company announced its authorization of a share repurchase program of up to $<ix:nonFraction id="c107876152" contextRef="i_2023-11-02" unitRef="USD" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" scale="6" format="ixt:num-dot-decimal" decimals="-7">30</ix:nonFraction>&#160;million of its outstanding common stock. The program does <em style="font: inherit;">not</em> commit to any particular timing or quantity of purchases, and the program <em style="font: inherit;"> may </em>be suspended or discontinued at any time. Under the program, shares <em style="font: inherit;"> may </em>be purchased in open market, including through Rule&#160;<em style="font: inherit;">10b5&#8209;1</em> of the Securities Exchange Act of <em style="font: inherit;">1934,</em> as amended, or in privately negotiated transactions administered by its broker, D.A. Davidson Companies. At this time, the Company has elected to limit its share repurchase transactions to only those under the Rule&#160;<em style="font: inherit;">10b5&#8209;1</em> trading plan it executed in <em style="font: inherit;"> November 2023, </em>which the Company believes considers its liquidity, including availability of borrowings and covenant compliance under the Amended Credit Agreement, and other capital allocation priorities of the business. The Company&#8217;s Rule&#160;<em style="font: inherit;">10b5&#8209;1</em> trading plan designates up to $<ix:nonFraction id="c107876158" contextRef="i_2023-12-01" unitRef="USD" name="nwpx:Rule10b51TradingPlanDesignatedAmount" scale="6" format="ixt:num-dot-decimal" decimals="-7">10</ix:nonFraction>&#160;million for repurchases and provides for daily share repurchases that fluctuate with changes in the trading price of its common stock.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">22</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">During the year ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company repurchased approximately <ix:nonFraction id="c107876162" contextRef="d_2023-01-01_2023-12-31_ShareRepurchaseProgramAxis-ShareRepurchaseProgramMember" unitRef="Share" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0" format="ixt:num-dot-decimal" decimals="INF">29,000</ix:nonFraction>&#160;shares of the Company&#8217;s common stock for an aggregate amount of $<ix:nonFraction id="c107876163" contextRef="d_2023-01-01_2023-12-31_ShareRepurchaseProgramAxis-ShareRepurchaseProgramMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.8</ix:nonFraction>&#160;million. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, $<ix:nonFraction id="c107876166" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" scale="6" format="ixt:num-dot-decimal" decimals="-5">29.2</ix:nonFraction>&#160;million of the share repurchase authorization remained available for repurchases under this program. There were <ix:nonFraction id="c107876167" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> share repurchases authorized during the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2022</em> or <em style="font: inherit;">2021</em>.</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock" id="c2569420" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">13.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>RETIREMENT PLANS:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Defined Contribution Plan</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has a defined contribution retirement plan that covers substantially all of its employees and provides for a Company match of up to <ix:nonFraction id="c107876172" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-DefinedContributionPlanMember" unitRef="Pure" name="nwpx:CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" scale="-2" format="ixt:num-dot-decimal" decimals="1">50</ix:nonFraction>% of the <em style="font: inherit;">first</em> <ix:nonFraction id="c107876174" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-DefinedContributionPlanMember" unitRef="Pure" name="nwpx:EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent" scale="-2" format="ixt:num-dot-decimal" decimals="2">8</ix:nonFraction>% of employee contributions to the plan, subject to certain limitations.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">ParkUSA had a defined contribution retirement plan that covered substantially all of its employees and provided for a match of up to <ix:nonFraction id="c107876175" contextRef="d_2021-10-06_2021-12-31_RetirementPlanTypeAxis-ParkusaDefinedContributionPlanMember" unitRef="Pure" name="nwpx:CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" scale="-2" format="ixt:num-dot-decimal" decimals="0">100</ix:nonFraction>% of the <em style="font: inherit;">first</em> <ix:nonFraction id="c107876177" contextRef="d_2021-10-06_2021-12-31_RetirementPlanTypeAxis-ParkusaDefinedContributionPlanMember" unitRef="Pure" name="nwpx:EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent" scale="-2" format="ixt:num-dot-decimal" decimals="2">4</ix:nonFraction>% of employee contributions to the plan, subject to certain limitations. After the acquisition of ParkUSA on <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">5,</em> <em style="font: inherit;">2021,</em> employees of ParkUSA continued to contribute to this plan until it was merged into the Company&#8217;s plan effective <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2021.</em></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Defined Benefit Plans</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has <span style="-sec-ix-hidden:c107876182">two</span> noncontributory defined benefit plans. Effective <em style="font: inherit;">2001,</em> both plans were frozen and participants were fully vested in their accrued benefits as of the date each plan was frozen. <em style="font: inherit;">No</em> additional participants can be added to the plans and <em style="font: inherit;">no</em> additional service can be earned by participants subsequent to the date the plans were frozen. The funding policy for both of these plans is based on current plan costs plus amortization of the unfunded plan liability.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the Company had recorded, in accordance with the actuarial valuations, an accrued pension asset of $<ix:nonFraction id="c107876189" contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.5</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107876190" contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;million, respectively, in Other long-term assets, and an unrecognized actuarial loss, net of tax, of $<ix:nonFraction id="c107876191" contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="nwpx:AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.2</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107876192" contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="nwpx:AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.5</ix:nonFraction>&#160;million, respectively, in Accumulated other comprehensive loss. Additionally, as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the projected and accumulated benefit obligation was $<ix:nonFraction id="c107876196" contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:DefinedBenefitPlanAccumulatedBenefitObligation" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.6</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107876197" contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:DefinedBenefitPlanAccumulatedBenefitObligation" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.8</ix:nonFraction>&#160;million, respectively, and the fair value of plan assets was $<ix:nonFraction id="c107876198" contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:DefinedBenefitPlanFairValueOfPlanAssets" scale="6" format="ixt:num-dot-decimal" decimals="-5">5.1</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107876199" contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:DefinedBenefitPlanFairValueOfPlanAssets" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.9</ix:nonFraction>&#160;million, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The net periodic benefit cost was approximately $<ix:nonFraction id="c107876200" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:DefinedBenefitPlanNetPeriodicBenefitCost" scale="6" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>, $<ix:nonFraction id="c107876201" contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:DefinedBenefitPlanNetPeriodicBenefitCost" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;million, and $<ix:nonFraction id="c107876202" contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:DefinedBenefitPlanNetPeriodicBenefitCost" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;million for each of the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em>, respectively. The weighted-average discount rates used to measure the projected benefit obligation were <ix:nonFraction id="c107876207" contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="Pure" name="us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate" scale="-2" format="ixt:num-dot-decimal" decimals="4">4.69</ix:nonFraction>% and <ix:nonFraction id="c107876208" contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="Pure" name="us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate" scale="-2" format="ixt:num-dot-decimal" decimals="4">4.89</ix:nonFraction>% as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The plan assets are invested in pooled separate accounts stated at fair value based on the daily net asset value of the account and are therefore <em style="font: inherit;">not</em> categorized in the fair value hierarchy. The expected weighted-average long-term rate of return on plan assets was <ix:nonFraction id="c107876213" contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="Pure" name="us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets" scale="-2" format="ixt:num-dot-decimal" decimals="2">7.00</ix:nonFraction>% as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Non-qualified Retirement Savings Plan</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has a deferred compensation plan that covered officers and selected highly compensated employees until it was frozen in <em style="font: inherit;">2016.</em> As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, deferred compensation plan balances of $<ix:nonFraction id="c107876221" contextRef="i_2023-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember_RetirementPlanTypeAxis-NonqualifiedRetirementSavingsPlanMember" unitRef="USD" name="us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">3.9</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107876222" contextRef="i_2022-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember_RetirementPlanTypeAxis-NonqualifiedRetirementSavingsPlanMember" unitRef="USD" name="us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">3.6</ix:nonFraction>&#160;million, respectively, were recorded in Other assets and Other long-term liabilities.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Total expense for all retirement plans for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em> was $<ix:nonFraction id="c107876227" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:RetirementPlanExpense" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.5</ix:nonFraction>&#160;million, $<ix:nonFraction id="c107876228" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:RetirementPlanExpense" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.2</ix:nonFraction>&#160;million, and $<ix:nonFraction id="c107876229" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:RetirementPlanExpense" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.8</ix:nonFraction>&#160;million, respectively, and is primarily related to the defined contribution plan.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" id="c2569421" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">14.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>SHARE-BASED COMPENSATION:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has <ix:nonFraction id="c107876231" contextRef="d_2023-01-01_2023-12-31" unitRef="Pure" name="nwpx:NumberOfActiveStockIncentivePlans" scale="0" format="ixt-sec:numwordsen" decimals="INF">one</ix:nonFraction> active stock incentive plan for employees and directors, the <em style="font: inherit;">2022</em> Stock Incentive Plan, which provides for awards of stock options to purchase shares of common stock, stock appreciation rights, restricted and unrestricted shares of common stock, RSUs, and PSAs. In addition, the Company has <span style="-sec-ix-hidden:c107876233">one</span> inactive stock incentive plan, the <em style="font: inherit;">2007</em> Stock Incentive Plan, under which previously granted awards remain outstanding.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">23</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes share-based compensation expense recorded (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" id="c2569422" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Cost of sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875336" contextRef="d_2023-01-01_2023-12-31_IncomeStatementLocationAxis-CostOfSalesMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,027</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875337" contextRef="d_2022-01-01_2022-12-31_IncomeStatementLocationAxis-CostOfSalesMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-4">1,320</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875338" contextRef="d_2021-01-01_2021-12-31_IncomeStatementLocationAxis-CostOfSalesMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,003</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Selling, general, and administrative expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875339" contextRef="d_2023-01-01_2023-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,645</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875340" contextRef="d_2022-01-01_2022-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,382</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875341" contextRef="d_2021-01-01_2021-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,213</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875342" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,672</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875343" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,702</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875344" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,216</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">There were <ix:nonFraction id="c107876236" contextRef="i_2023-12-31" unitRef="Share" name="us-gaap:CommonStockCapitalSharesReservedForFutureIssuance" scale="0" format="ixt:num-dot-decimal" decimals="INF">722,573</ix:nonFraction>&#160;shares of common stock available for future issuance under the Company&#8217;s stock incentive plan as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, assuming the outstanding PSAs vest at the target level of <ix:nonFraction id="c107876239" contextRef="i_2023-12-31" unitRef="Pure" name="nwpx:CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed" scale="-2" format="ixt:num-dot-decimal" decimals="0">100</ix:nonFraction>%.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Restricted Stock Units and Performance Share Awards</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company&#8217;s stock incentive plan provides for equity instruments, such as RSUs and PSAs, which grant the right to receive a specified number of shares at specified times. RSUs and PSAs are service-based awards that vest according to the terms of the grant. PSAs have performance-based payout conditions.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The following table summarizes the Company&#8217;s RSU and PSA activity:</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" id="c2569423" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Number of RSUs and PSAs (1)</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted- Average Grant Date Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unvested RSUs and PSAs as of December 31, 2022</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875347" contextRef="i_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0" format="ixt:num-dot-decimal" decimals="INF">200,924</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875348" contextRef="i_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">30.80</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">RSUs and PSAs granted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875349" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:num-dot-decimal" decimals="INF">134,498</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875350" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">28.41</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Unvested RSUs and PSAs canceled</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875351" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0" format="ixt:num-dot-decimal" decimals="INF">13,589</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875352" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">30.82</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">RSUs and PSAs vested (2)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875353" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0" format="ixt:num-dot-decimal" decimals="INF">95,442</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875354" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">30.12</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unvested RSUs and PSAs as of December 31, 2023</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875355" contextRef="i_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0" format="ixt:num-dot-decimal" decimals="INF">226,391</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875356" contextRef="i_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">29.66</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 18pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">(<em style="font: inherit;">1</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">The number of PSAs disclosed in this table are at the target level of <ix:nonFraction id="c107876241" contextRef="i_2023-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="nwpx:PerformanceShareAwardTargetLevelPercentage" scale="-2" format="ixt:num-dot-decimal" decimals="0">100</ix:nonFraction>%.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 18pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">(<em style="font: inherit;">2</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">For the PSAs vested on <em style="font: inherit;"> March&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023,</em> the actual number of common shares that were issued was determined by multiplying the PSAs at the target level of <em style="font: inherit;">100%,</em> as disclosed in this table, by a payout percentage based on the performance-based conditions achieved. The payout percentage was <ix:nonFraction id="c107876246" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="nwpx:PerformanceAwardsIssuedMultiplier" scale="-2" format="ixt:num-dot-decimal" decimals="2">159</ix:nonFraction>% for the <em style="font: inherit;">2020</em>-<em style="font: inherit;">2022</em> performance period, <ix:nonFraction id="c107876249" contextRef="d_2021-01-01_2021-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="nwpx:PerformanceAwardsIssuedMultiplier" scale="-2" format="ixt:num-dot-decimal" decimals="2">126</ix:nonFraction>% for the <em style="font: inherit;">2021</em>-<em style="font: inherit;">2022</em> performance period, and <ix:nonFraction id="c107876252" contextRef="d_2022-01-01_2022-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="nwpx:PerformanceAwardsIssuedMultiplier" scale="-2" format="ixt:num-dot-decimal" decimals="2">132</ix:nonFraction>% for the <em style="font: inherit;">2022</em> performance period.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The unvested balance of RSUs and PSAs as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> includes approximately <ix:nonFraction id="c107876256" contextRef="i_2023-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="nwpx:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" scale="0" format="ixt:num-dot-decimal" decimals="INF">170,000</ix:nonFraction>&#160;PSAs at the target level of <span style="-sec-ix-hidden:c107876257">100%.</span> The vesting of these awards is subject to the achievement of specified performance-based conditions, and the actual number of common shares that will ultimately be issued will be determined by multiplying this number of PSAs by a payout percentage ranging from <ix:nonFraction id="c107876258" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember" unitRef="Pure" name="nwpx:PerformanceAwardsIssuedMultiplier" scale="-2" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>% to <ix:nonFraction id="c107876259" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember" unitRef="Pure" name="nwpx:PerformanceAwardsIssuedMultiplier" scale="-2" format="ixt:num-dot-decimal" decimals="0">200</ix:nonFraction>%.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The weighted-average grant date fair value of RSUs and PSAs granted during the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em> was $<ix:nonFraction id="c107876264" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">28.41</ix:nonFraction>, $<ix:nonFraction id="c107876265" contextRef="d_2022-01-01_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">30.68</ix:nonFraction>, and $<ix:nonFraction id="c107876266" contextRef="d_2021-01-01_2021-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">33.30</ix:nonFraction>, respectively. The total fair value of RSUs and PSAs vested during the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em> was $<ix:nonFraction id="c107876271" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USD" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.4</ix:nonFraction>&#160;million, $<ix:nonFraction id="c107876272" contextRef="d_2022-01-01_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USD" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.4</ix:nonFraction>&#160;million, and $<ix:nonFraction id="c107876273" contextRef="d_2021-01-01_2021-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USD" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue" scale="6" format="ixt:num-dot-decimal" decimals="-5">3.3</ix:nonFraction>&#160;million, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Based on the estimated level of achievement of the performance targets associated with the PSAs as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, unrecognized compensation expense related to the unvested portion of the Company&#8217;s RSUs and PSAs was $<ix:nonFraction id="c107876276" contextRef="i_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" unitRef="USD" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" scale="6" format="ixt:num-dot-decimal" decimals="-6">3.0</ix:nonFraction>&#160;million, which is expected to be recognized over a weighted-average period of <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c107876277" format="ixt-sec:duryear">1.5</ix:nonNumeric>&#160;years.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Stock Awards</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">For the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em>, stock awards of <ix:nonFraction id="c107876282" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:num-dot-decimal" decimals="INF">15,904</ix:nonFraction>&#160;shares, <ix:nonFraction id="c107876283" contextRef="d_2022-01-01_2022-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:num-dot-decimal" decimals="INF">11,380</ix:nonFraction>&#160;shares, and <ix:nonFraction id="c107876284" contextRef="d_2021-01-01_2021-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:num-dot-decimal" decimals="INF">12,606</ix:nonFraction>&#160;shares, respectively, were granted to non-employee directors, which vested immediately upon issuance. The Company recorded compensation expense based on the weighted-average fair market value per share of the awards on the grant date of $<ix:nonFraction id="c107876285" contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">29.51</ix:nonFraction> in <em style="font: inherit;">2023</em>, $<ix:nonFraction id="c107876287" contextRef="d_2022-01-01_2022-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">30.75</ix:nonFraction> in <em style="font: inherit;">2022</em>, and $<ix:nonFraction id="c107876289" contextRef="d_2021-01-01_2021-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">30.94</ix:nonFraction> in <em style="font: inherit;">2021</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">24</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:CommitmentsAndContingenciesDisclosureTextBlock" id="c2569424" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">15.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>COMMITMENTS AND CONTINGENCIES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Portland Harbor Superfund Site</b></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;">2000,</em> a section of the lower Willamette River known as the Portland Harbor Superfund Site was included on the National Priorities List at the request of the United States Environmental Protection Agency (&#8220;EPA&#8221;). While the Company&#8217;s Portland, Oregon manufacturing facility does <em style="font: inherit;">not</em> border the Willamette River, an outfall from the facility&#8217;s stormwater system drains into a neighboring property&#8217;s privately owned stormwater system and slip. Also in <em style="font: inherit;">2000,</em> the Company was notified by the EPA and the Oregon Department of Environmental Quality (&#8220;ODEQ&#8221;) of potential liability under the Comprehensive Environmental Response, Compensation, and Liability Act (&#8220;CERCLA&#8221;). A remedial investigation and feasibility study of the Portland Harbor Superfund Site was directed by a group of <ix:nonFraction id="c107876296" contextRef="i_2017-01-31_CounterpartyNameAxis-LowerWillametteGroupMember" unitRef="Pure" name="nwpx:NumberOfPotentiallyResponsibleParties" scale="0" format="ixt:num-dot-decimal" decimals="INF">14</ix:nonFraction> potentially responsible parties known as the Lower Willamette Group under agreement with the EPA. The EPA finalized the remedial investigation report in&#160;<em style="font: inherit;">2016,</em> and the feasibility study in <em style="font: inherit;">2016,</em> which identified multiple remedial alternatives. In <em style="font: inherit;">2017,</em> the EPA issued its Record of Decision selecting the remedy for cleanup at the Portland Harbor Superfund Site, which it believes will cost approximately $<ix:nonFraction id="c107876300" contextRef="d_2017-01-01_2017-01-31_EnvironmentalRemediationSiteAxis-PortlandHarborSuperfundSiteMember" unitRef="USD" name="nwpx:EstimatedCostOfEPASelectedRemedy" scale="9" format="ixt:num-dot-decimal" decimals="-9">1</ix:nonFraction>&#160;billion at net present value and <ix:nonNumeric contextRef="d_2017-01-01_2017-01-31_EnvironmentalRemediationSiteAxis-PortlandHarborSuperfundSiteMember" name="nwpx:EstimatedTimeToCompleteSelectedEPARemedy" id="c107876301" format="ixt-sec:duryear">13</ix:nonNumeric>&#160;years to complete. The EPA has <em style="font: inherit;">not</em> yet determined who is responsible for the costs of cleanup or how the cleanup costs will be allocated among the more than <ix:nonFraction id="c107876303" contextRef="i_2017-01-31_EnvironmentalRemediationSiteAxis-PortlandHarborSuperfundSiteMember" unitRef="Pure" name="nwpx:NumberOfPotentiallyResponsibleParties" scale="0" format="ixt:num-dot-decimal" decimals="INF">150</ix:nonFraction> potentially responsible parties (&#8220;PRPs&#8221;). Because of the large number of potentially responsible parties and the variability in the range of remediation alternatives, the Company is unable to estimate an amount or an amount within a range of costs for its obligation with respect to the Portland Harbor Superfund Site matters, and <em style="font: inherit;">no</em> further adjustment to the Consolidated Financial Statements has been recorded as of the date of this filing.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The ODEQ is separately providing oversight of voluntary investigations and source control activities by the Company involving the Company&#8217;s site, which are focused on controlling any current &#8220;uplands&#8221; releases of contaminants into the Willamette River. <em style="font: inherit;">No</em> liabilities have been established in connection with these investigations because the extent of contamination and the Company&#8217;s responsibility for the contamination have <em style="font: inherit;">not</em> yet been determined.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Concurrent with the activities of the EPA and the ODEQ, the Portland Harbor Natural Resources Trustee Council (&#8220;Trustees&#8221;) sent some or all of the same parties, including the Company, a notice of intent to perform a Natural Resource Damage Assessment (&#8220;NRDA&#8221;) for the Portland Harbor Superfund Site to determine the nature and extent of natural resource damages under CERCLA Section&#160;<em style="font: inherit;">107.</em> The Trustees for the Portland Harbor Superfund Site consist of representatives from several Northwest Indian Tribes, <em style="font: inherit;">three</em> federal agencies, and <em style="font: inherit;">one</em> state agency. The Trustees act independently of the EPA and the ODEQ. The Trustees have encouraged potentially responsible parties to voluntarily participate in the funding of their injury assessments and several of those parties have agreed to do so. In <em style="font: inherit;">2014,</em> the Company agreed to participate in the injury assessment process, which included funding $<ix:nonFraction id="c107876311" contextRef="i_2014-06-30_LossContingenciesByNatureOfContingencyAxis-PortlandHarborNaturalreSourcesTrusteeCouncilMember" unitRef="USD" name="us-gaap:LossContingencyAccrualCarryingValueCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.4</ix:nonFraction>&#160;million of the assessment. The Company has <em style="font: inherit;">not</em> assumed any additional payment obligations or liabilities with the participation with the NRDA, nor does the Company expect to incur significant future costs in the resolution of the NRDA.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;">2017,</em> the Confederated Tribes and Bands of the Yakama Nation, a Trustee until they withdrew from the council in <em style="font: inherit;">2009,</em> filed a complaint against the potentially responsible parties including the Company to recover costs related to their own injury assessment and compensation for natural resources damages. The case has been stayed until <em style="font: inherit;">2025,</em> and the Company does <em style="font: inherit;">not</em> have sufficient information at this time to determine the likelihood of a loss in this matter or the amount of damages that could be allocated to the Company.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has insurance policies for defense costs, as well as indemnification policies it believes will provide reimbursement for the remediation assessed. However, the Company can provide <em style="font: inherit;">no</em> assurance that those policies will cover all of the costs which the Company <em style="font: inherit;"> may </em>incur.</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>All Sites</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company operates its facilities under numerous governmental permits and licenses relating to air emissions, stormwater runoff, and other environmental matters. The Company&#8217;s operations are also governed by many other laws and regulations, including those relating to workplace safety and worker health, principally the Occupational Safety and Health Act and regulations thereunder which, among other requirements, establish noise and dust standards. The Company believes it is in material compliance with its permits and licenses and these laws and regulations, and the Company does <em style="font: inherit;">not</em> believe that future compliance with such laws and regulations will have a material adverse effect on its financial position, results of operations, or cash flows.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">25</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Other Contingencies and Legal Proceedings</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">From time to time, the Company is party to a variety of legal actions, including claims, suits, complaints, and investigations arising out of the ordinary course of its business. The Company maintains insurance coverage against potential claims in amounts that are believed to be adequate. To the extent that insurance does <em style="font: inherit;">not</em> cover legal, defense, and indemnification costs associated with a loss contingency, the Company records accruals when such losses are considered probable and reasonably estimable. The Company believes that it is <em style="font: inherit;">not</em> presently a party to legal actions, the outcomes of which would have a material adverse effect on its business, financial condition, results of operations, or cash flows.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Commitments</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company&#8217;s commitments include approximately $<ix:nonFraction id="c107876324" contextRef="i_2023-12-31_OtherCommitmentsAxis-CapitalAdditionsMember" unitRef="USD" name="nwpx:OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.2</ix:nonFraction>&#160;million remaining relating to its investment in the primary component of the new reinforced concrete pipe mill for which the Company has <em style="font: inherit;">not</em> yet received the equipment and approximately $<ix:nonFraction id="c107876326" contextRef="i_2023-12-31_OtherCommitmentsAxis-CapitalAdditionsMember" unitRef="USD" name="us-gaap:OtherCommitment" scale="6" format="ixt:num-dot-decimal" decimals="-5">5.2</ix:nonFraction>&#160;million remaining relating to the construction of a building for the new mill at the Company&#8217;s facility in Salt Lake City, Utah.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Guarantees</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has entered into certain letters of credit that total $<ix:nonFraction id="c107876327" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:LettersOfCreditOutstandingAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.1</ix:nonFraction>&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>. The letters of credit relate to workers&#8217; compensation insurance.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:RevenueFromContractWithCustomerTextBlock" id="c2569425" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">16.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>REVENUE:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Net sales by geographic region, based on the location of the customer, were as follows (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock" id="c2569426" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Net sales by geographic region:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">United States</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875363" contextRef="d_2023-01-01_2023-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">420,925</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875364" contextRef="d_2022-01-01_2022-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">423,961</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875365" contextRef="d_2021-01-01_2021-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">313,729</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Canada</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875366" contextRef="d_2023-01-01_2023-12-31_StatementGeographicalAxis-CA" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-4">23,430</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875367" contextRef="d_2022-01-01_2022-12-31_StatementGeographicalAxis-CA" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">33,704</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875368" contextRef="d_2021-01-01_2021-12-31_StatementGeographicalAxis-CA" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">19,584</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875369" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">444,355</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875370" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">457,665</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875371" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">333,313</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">One SPP customer accounted for <ix:nonFraction id="c107876331" contextRef="d_2023-01-01_2023-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember" unitRef="Pure" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" format="ixt:num-dot-decimal" decimals="1">10</ix:nonFraction>%, <ix:nonFraction id="c107876332" contextRef="d_2022-01-01_2022-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember" unitRef="Pure" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" format="ixt:num-dot-decimal" decimals="2">12</ix:nonFraction>%, and <ix:nonFraction id="c107876333" contextRef="d_2021-01-01_2021-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember" unitRef="Pure" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" format="ixt:num-dot-decimal" decimals="2">12</ix:nonFraction>% of total net sales for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em>, respectively. <ix:nonFraction id="c107876338" contextRef="d_2023-01-01_2023-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="Pure" name="nwpx:NumberOfMajorCustomers" scale="0" format="ixt-sec:numwordsen" decimals="-3">No</ix:nonFraction> Precast customer accounted for more than <em style="font: inherit;">10%</em> of total net sales for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Net revisions in contract estimates resulted in an increase (decrease) in SPP net sales of ($<ix:nonFraction id="c107876344" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" scale="6" format="ixt:num-dot-decimal" decimals="-5" sign="-">1.1</ix:nonFraction>)&#160;million, ($<ix:nonFraction id="c107876345" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" scale="6" format="ixt:num-dot-decimal" decimals="-5" sign="-">0.6</ix:nonFraction>)&#160;million, and $<ix:nonFraction id="c107876346" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" scale="6" format="ixt:num-dot-decimal" decimals="-6">2.0</ix:nonFraction>&#160;million for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em>, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Disaggregation of Revenue</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table disaggregates revenue by recognition over time or at a point in time, as the Company believes it best depicts how the nature, amount, timing, and uncertainty of its revenue and cash flows are affected by economic factors (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:DisaggregationOfRevenueTableTextBlock" id="c2569427" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Over time</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875379" contextRef="d_2023-01-01_2023-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">296,381</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875380" contextRef="d_2022-01-01_2022-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">307,572</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875381" contextRef="d_2021-01-01_2021-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">259,823</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Point in time</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875382" contextRef="d_2023-01-01_2023-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">147,974</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875383" contextRef="d_2022-01-01_2022-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">150,093</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875384" contextRef="d_2021-01-01_2021-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-4">73,490</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Net sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875385" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">444,355</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875386" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">457,665</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875387" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">333,313</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">26</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Contract Assets and Contract Liabilities</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The difference between the opening and closing balances of the Company&#8217;s contract assets and contract liabilities primarily results from the timing difference between the Company&#8217;s performance and billings.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following is a summary of the changes in contract assets (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock" id="c37DA8820-6D4C-44B5-BC66-9464CD15D9D2" escape="true" continuedAt="c818F651B-2788-4A89-AAAE-26C2173B75E7">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, beginning of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875392" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerAssetNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">121,778</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875393" contextRef="i_2021-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerAssetNet" scale="3" format="ixt:num-dot-decimal" decimals="-4">107,170</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Revenue recognized in advance of billings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875394" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" scale="3" format="ixt:num-dot-decimal" decimals="-3">291,812</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875395" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" scale="3" format="ixt:num-dot-decimal" decimals="-3">306,095</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Billings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875396" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:ContractWithCustomerAssetBillings" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">293,356</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875397" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:ContractWithCustomerAssetBillings" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">294,506</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875398" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:ContractWithCustomerAssetOther" scale="3" format="ixt:num-dot-decimal" decimals="-3">282</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875399" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:ContractWithCustomerAssetOther" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,019</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, end of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875400" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerAssetNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">120,516</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875401" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerAssetNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">121,778</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following is a summary of the changes in contract liabilities (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:continuation id="c818F651B-2788-4A89-AAAE-26C2173B75E7">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, beginning of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875406" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">17,456</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875407" contextRef="i_2021-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,623</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Billings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875408" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:ContractWithCustomerLiabilityBillings" scale="3" format="ixt:num-dot-decimal" decimals="-3">20,815</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875409" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:ContractWithCustomerLiabilityBillings" scale="3" format="ixt:num-dot-decimal" decimals="-3">17,618</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%; padding: 0; margin: 0"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Revenue recognized</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c107875410" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiabilityRevenueRecognized" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">16,984</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c107875411" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiabilityRevenueRecognized" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">2,663</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875412" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:ContractWithCustomerLiabilityOther" scale="3" format="ixt:num-dot-decimal" decimals="-3">163</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875413" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:ContractWithCustomerLiabilityOther" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">122</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, end of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875414" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiability" scale="3" format="ixt:num-dot-decimal" decimals="-4">21,450</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875415" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">17,456</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:continuation>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Backlog</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Backlog represents the balance of remaining performance obligations under signed contracts for SPP water infrastructure steel pipe products for which revenue is recognized over time. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, backlog was $<ix:nonFraction id="c107876354" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:RevenueRemainingPerformanceObligation" scale="6" format="ixt:num-dot-decimal" decimals="-6">273</ix:nonFraction>&#160;million. The Company expects to recognize approximately <ix:nonFraction id="c107876355" contextRef="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2024-01-01" unitRef="Pure" name="us-gaap:RevenueRemainingPerformanceObligationPercentage" scale="-2" format="ixt:num-dot-decimal" decimals="2">76</ix:nonFraction>% of the remaining performance obligations in <span style="-sec-ix-hidden:c107876356">2024</span>, <ix:nonFraction id="c107876357" contextRef="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2025-01-01" unitRef="Pure" name="us-gaap:RevenueRemainingPerformanceObligationPercentage" scale="-2" format="ixt:num-dot-decimal" decimals="2">23</ix:nonFraction>% in <span style="-sec-ix-hidden:c107876358">2025</span>, and the balance thereafter.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:IncomeTaxDisclosureTextBlock" id="c2569430" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">17.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>INCOME TAXES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The United States and foreign components of Income before income taxes are as follows (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" id="c2569431" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">United States</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875422" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="3" format="ixt:num-dot-decimal" decimals="-3">27,814</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875423" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="3" format="ixt:num-dot-decimal" decimals="-3">40,271</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875424" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="3" format="ixt:num-dot-decimal" decimals="-6">14,000</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Foreign</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875425" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,465</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875426" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,079</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875427" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,158</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875428" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">29,279</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875429" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-4">41,350</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875430" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">15,158</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">27</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The components of Income tax expense are as follows (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" id="c2569432" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Current:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Federal</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875437" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,817</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875438" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,443</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875439" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,256</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">State</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875440" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,519</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875441" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,264</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875442" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,064</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Foreign</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875443" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">289</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875444" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">198</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875445" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">213</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total current income tax expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875446" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:CurrentIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,625</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875447" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:CurrentIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,905</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875448" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:CurrentIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,533</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Deferred:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Federal</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875449" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">612</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875450" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">22</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875451" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">573</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">State</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875452" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">195</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875453" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-4">340</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875454" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">464</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Foreign</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875455" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875456" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">22</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875457" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">7</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total deferred income tax expense (benefit)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875458" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">418</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875459" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">296</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875460" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">102</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total income tax expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875461" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,207</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875462" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,201</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875463" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,635</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The difference between the Company&#8217;s effective income tax rate and the federal statutory income tax rate is explained as follows (dollar amounts in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" id="c2569433" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Income tax expense at federal statutory rate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875472" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,148</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875473" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,683</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875474" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,183</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">State expense, net of federal income tax effect</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875475" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationStateAndLocalIncomeTaxes" scale="3" format="ixt:num-dot-decimal" decimals="-3">942</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875476" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationStateAndLocalIncomeTaxes" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,463</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875477" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationStateAndLocalIncomeTaxes" scale="3" format="ixt:num-dot-decimal" decimals="-3">547</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Change in valuation allowance</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875478" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">30</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875479" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875480" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">247</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Nondeductible expenses</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875481" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationNondeductibleExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">257</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875482" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationNondeductibleExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">35</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875483" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationNondeductibleExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">31</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Foreign rate differential</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875484" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential" scale="3" format="ixt:num-dot-decimal" decimals="-3">133</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875485" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential" scale="3" format="ixt:num-dot-decimal" decimals="-3">97</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875486" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential" scale="3" format="ixt:num-dot-decimal" decimals="-3">104</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Accrued interest on uncertain income tax positions</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; background-color: rgba(0, 0, 0, 0); padding: 0; margin: 0"><ix:nonFraction id="c107875487" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">264</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107875488" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">106</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107875489" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">16</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">State franchise tax</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; background-color: rgba(0, 0, 0, 0); padding: 0; margin: 0"><ix:nonFraction id="c107875490" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="nwpx:EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" scale="3" format="ixt:num-dot-decimal" decimals="-4">250</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107875491" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="nwpx:EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" scale="3" format="ixt:num-dot-decimal" decimals="-4">110</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107875492" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="nwpx:EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">92</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875493" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationOtherAdjustments" scale="3" format="ixt:num-dot-decimal" decimals="-3">243</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875494" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationOtherAdjustments" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">222</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875495" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationOtherAdjustments" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">29</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Income tax expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875496" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,207</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875497" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,201</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875498" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,635</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Effective income tax rate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875499" contextRef="d_2023-01-01_2023-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:num-dot-decimal" decimals="2">28.0</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875500" contextRef="d_2022-01-01_2022-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:num-dot-decimal" decimals="3">24.7</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875501" contextRef="d_2021-01-01_2021-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:num-dot-decimal" decimals="2">24.0</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">28</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The income tax effect of temporary differences that give rise to significant portions of deferred income tax assets and liabilities is presented below (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" id="c2569434" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Deferred income tax assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Accrued employee benefits</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875506" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,096</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875507" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" scale="3" format="ixt:num-dot-decimal" decimals="-4">3,840</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Inventories</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875508" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsInventory" scale="3" format="ixt:num-dot-decimal" decimals="-4">380</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875509" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsInventory" scale="3" format="ixt:num-dot-decimal" decimals="-4">350</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Trade receivable, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875510" contextRef="i_2023-12-31" unitRef="USD" name="nwpx:DeferredTaxAssetTradeReceivableNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">532</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875511" contextRef="i_2022-12-31" unitRef="USD" name="nwpx:DeferredTaxAssetTradeReceivableNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">329</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Net operating loss carryforwards</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875512" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwards" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,429</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875513" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwards" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,944</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Tax credit carryforwards</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875514" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsTaxCreditCarryforwards" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,777</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875515" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsTaxCreditCarryforwards" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,863</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Contract assets, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875516" contextRef="i_2023-12-31" unitRef="USD" name="nwpx:DeferredTaxAssetContractAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">934</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875517" contextRef="i_2022-12-31" unitRef="USD" name="nwpx:DeferredTaxAssetContractAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">403</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875518" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsOther" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,952</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875519" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsOther" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,074</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875520" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-5">13,100</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875521" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,803</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Valuation allowance</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875522" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,641</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875523" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,051</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875524" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,459</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875525" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,752</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Deferred income tax liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Property and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875526" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-4">13,850</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875527" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-4">13,550</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875528" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" scale="3" format="ixt:num-dot-decimal" decimals="-5">800</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875529" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,319</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875530" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,164</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875531" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" scale="3" format="ixt:num-dot-decimal" decimals="-3">606</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Prepaid expenses</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875532" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesPrepaidExpenses" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,217</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875533" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesPrepaidExpenses" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,285</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875534" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">17,031</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875535" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-4">16,760</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Net deferred income tax liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875536" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,572</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875537" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,008</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Amounts are presented in the Consolidated Balance Sheets as follows:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Deferred income tax assets, included in Other assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875538" contextRef="i_2023-12-31_BalanceSheetLocationAxis-OtherAssetsMember" unitRef="USD" name="us-gaap:DeferredIncomeTaxAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-4">370</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875539" contextRef="i_2022-12-31_BalanceSheetLocationAxis-OtherAssetsMember" unitRef="USD" name="us-gaap:DeferredIncomeTaxAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">394</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Deferred income taxes</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875540" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,942</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875541" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,402</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Net deferred income tax liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(<ix:nonFraction id="c107875542" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,572</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875543" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,008</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">In assessing the ability to realize deferred income tax assets, management considers whether it is more likely than <em style="font: inherit;">not</em> that some portion or all of the deferred income tax assets will <em style="font: inherit;">not</em> be realized. The ultimate realization of deferred income tax assets is dependent upon the generation of future taxable income during the periods in which those temporary differences become deductible. Management considers the scheduled reversal of deferred income tax liabilities, projected future taxable income, taxable income in carryback periods, and tax planning strategies in making this assessment. The Company believes it is more likely than <em style="font: inherit;">not</em> it will realize the benefits of its deductible differences as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, net of any valuation allowance. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company continues to maintain a valuation allowance on federal tax credits and select state jurisdictions.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company had approximately $<ix:nonFraction id="c107876371" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:TaxCreditCarryforwardAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.3</ix:nonFraction>&#160;million of federal income tax credit carryforwards, which expire on various dates between <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-DomesticCountryMember_RangeAxis-MinimumMember" name="nwpx:TaxCreditCarryforwardExpirationYear" id="c107876372">2024</ix:nonNumeric> and <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-DomesticCountryMember_RangeAxis-MaximumMember" name="nwpx:TaxCreditCarryforwardExpirationYear" id="c107876373">2026</ix:nonNumeric>. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company also had approximately $<ix:nonFraction id="c107876376" contextRef="i_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember" unitRef="USD" name="us-gaap:OperatingLossCarryforwards" scale="6" format="ixt:num-dot-decimal" decimals="-5">18.4</ix:nonFraction>&#160;million of state net operating loss carryforwards, which expire on various dates between <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember_RangeAxis-MinimumMember" name="nwpx:OperatingLossCarryforwardsExpirationYear" id="c107876377">2024</ix:nonNumeric> and <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember_RangeAxis-MaximumMember" name="nwpx:OperatingLossCarryforwardsExpirationYear" id="c107876378">2036</ix:nonNumeric>, and state income tax credit carryforwards of $<ix:nonFraction id="c107876379" contextRef="i_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember" unitRef="USD" name="us-gaap:TaxCreditCarryforwardAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.4</ix:nonFraction>&#160;million, which began to expire in <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember" name="nwpx:TaxCreditCarryforwardExpirationYear" id="c107876380">2023</ix:nonNumeric>. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company also had approximately $<ix:nonFraction id="c107876383" contextRef="i_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember" unitRef="USD" name="us-gaap:OperatingLossCarryforwards" scale="6" format="ixt:num-dot-decimal" decimals="-5">8.4</ix:nonFraction>&#160;million of foreign net operating loss carryforwards, which expire on various dates between <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember_RangeAxis-MinimumMember" name="nwpx:OperatingLossCarryforwardsExpirationYear" id="c107876384">2024</ix:nonNumeric> and <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember_RangeAxis-MaximumMember" name="nwpx:OperatingLossCarryforwardsExpirationYear" id="c107876385">2033</ix:nonNumeric>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company files income tax returns in the United States Federal jurisdiction, in a limited number of foreign jurisdictions, and in many state jurisdictions. With few exceptions, the Company is <em style="font: inherit;">no</em> longer subject to United States Federal, state, or foreign income tax examinations for years before <span style="-sec-ix-hidden:c107876387">2019.</span></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">29</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">A summary of the changes in the unrecognized income tax benefits is presented below (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" id="c2569435" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Unrecognized income tax benefits, beginning of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875553" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,472</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875554" contextRef="i_2021-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,366</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875555" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="3" format="ixt:num-dot-decimal" decimals="-4">4,350</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Increases for positions taken in prior years</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875556" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" scale="3" format="ixt:num-dot-decimal" decimals="-3">264</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875557" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" scale="3" format="ixt:num-dot-decimal" decimals="-3">106</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875558" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" scale="3" format="ixt:num-dot-decimal" decimals="-3">16</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Unrecognized income tax benefits, end of year</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"><ix:nonFraction id="c107875559" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,736</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875560" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,472</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875561" contextRef="i_2021-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,366</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company does <em style="font: inherit;">not</em> believe it is reasonably possible that the total amounts of unrecognized income tax benefits will change in the following <em style="font: inherit;">twelve</em> months; however, actual results could differ from those currently expected. Effectively all of the unrecognized income tax benefits would affect the Company&#8217;s effective income tax rate if recognized at some point in the future.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company recognizes interest and penalties related to uncertain income tax positions in Income tax expense. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the Company had $<ix:nonFraction id="c107876394" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.4</ix:nonFraction>&#160;million and $<ix:nonFraction id="c107876395" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;million, respectively, of accrued interest related to uncertain income tax positions. Total interest for uncertain income tax positions did <em style="font: inherit;">not</em> change materially in <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, or <em style="font: inherit;">2021</em>.</p>
  </ix:nonNumeric>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ComprehensiveIncomeNoteTextBlock" id="c2569436" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"><b><em style="font: inherit;">18.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>ACCUMULATED OTHER COMPREHENSIVE LOSS:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Accumulated other comprehensive loss consists of the following (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" id="c2569437" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Pension liability adjustment, net of income tax benefit of $<span style="-sec-ix-hidden:c107876544">482 </span>and $<span style="-sec-ix-hidden:c107876545">592</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(<ix:nonFraction id="c107875566" contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,193</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(<ix:nonFraction id="c107875567" contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,532</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain (loss) on foreign currency forward contracts designated as cash flow hedges, net of income tax (expense) benefit of $<span style="-sec-ix-hidden:c107876546">12 </span>and $(<span style="-sec-ix-hidden:c107876547">33</span>)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875568" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">13</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875569" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember" unitRef="USD" name="us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">94</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain on interest rate swaps designated as cash flow hedges, net of income tax expense of $<span style="-sec-ix-hidden:c107876548">79 </span>and $<span style="-sec-ix-hidden:c107876549">213</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875570" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">246</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875571" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember" unitRef="USD" name="us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">649</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875572" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">960</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875573" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">789</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">30</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes changes in the components of Accumulated other comprehensive loss (in thousands). All amounts are net of income tax:</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" id="c2569438" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Pension Liability Adjustment</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Unrealized Gain (Loss) on Foreign Currency Forward Contracts Designated as Cash Flow Hedges</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Unrealized Gain on Interest Rate Swaps Designated as Cash Flow Hedges</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Balances, December 31, 2021</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875578" contextRef="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,487</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875579" contextRef="i_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">195</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875580" contextRef="i_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875581" contextRef="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,682</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other comprehensive income (loss) before reclassifications</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875582" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">41</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875583" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-5" sign="-">100</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875584" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">678</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875585" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">619</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 36%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Amounts reclassified from Accumulated other comprehensive loss</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875586" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">86</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875587" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">389</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875588" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">29</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875589" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">274</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 36%;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Net current period adjustments to Other comprehensive income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875590" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">45</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875591" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">289</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875592" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">649</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875593" contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">893</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Balances, December 31, 2022</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875594" contextRef="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,532</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875595" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">94</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875596" contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">649</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875597" contextRef="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">789</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding: 0; margin: 0"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Other comprehensive income (loss) before reclassifications</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107875598" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">338</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c107875599" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">115</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107875600" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">142</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c107875601" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">365</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Amounts reclassified from Accumulated other comprehensive loss</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875602" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875603" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">8</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875604" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">545</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875605" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">536</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Net current period adjustments to Other comprehensive loss</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875606" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3">339</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875607" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">107</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875608" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">403</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875609" contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">171</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Balances, December 31, 2023</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875610" contextRef="i_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,193</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875611" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">13</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875612" contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">246</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875613" contextRef="i_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">960</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">31</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table provides additional detail about Accumulated other comprehensive loss components that were reclassified to the Consolidated Statements of Operations (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock" id="c2569439" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Amount reclassified from Accumulated Other Comprehensive Loss</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Affected line item in the Consolidated</em></b></p> </td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"><b>Details about Accumulated Other</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Statements</em></b></p> </td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"><b>Comprehensive Loss Components</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">of Operations</em></b></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 34%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Pension liability adjustment:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Net periodic pension cost:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Service cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875626" contextRef="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">13</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875627" contextRef="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">13</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875628" contextRef="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">7</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Cost of sales</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Non-service cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875630" contextRef="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">11</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875631" contextRef="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">127</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875632" contextRef="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-4">110</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Other income</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Associated income tax (expense) benefit</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875634" contextRef="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875635" contextRef="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">28</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875636" contextRef="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">25</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Income tax expense</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875638" contextRef="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875639" contextRef="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">86</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875640" contextRef="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">78</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain (loss) on foreign currency forward contracts:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Gain (loss) on cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875642" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">99</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875643" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">163</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875644" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">72</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Net sales</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Loss on cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875646" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">109</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875647" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">680</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875648" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Property and equipment</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Associated income tax benefit</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875650" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">2</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875651" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">128</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875652" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">18</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Income tax expense</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875654" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">8</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875655" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">389</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875656" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">54</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain on interest rate swaps:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Gain on cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875658" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:InterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">719</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875659" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:InterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">39</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875660" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:InterestExpense" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Interest expense</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Associated income tax expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875662" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">174</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c107875663" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-4">10</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875664" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"><em style="font: inherit;">Income tax expense</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875666" contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">545</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875667" contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">29</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875668" contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 34%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Total reclassifications for the period</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875670" contextRef="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">536</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c107875671" contextRef="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">274</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875672" contextRef="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">24</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:SegmentReportingDisclosureTextBlock" id="c2569440" escape="true">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">19.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>SEGMENT INFORMATION:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The operating segments reported below are based on the nature of the products sold and the manufacturing process used by the Company and are the segments of the Company for which separate financial information is available and for which operating results are regularly evaluated by the Company&#8217;s chief operating decision maker, its Chief Executive Officer, to make decisions about resources to be allocated to the segment and assess its performance. Management evaluates segment performance based on gross profit. The Company does <em style="font: inherit;">not</em> allocate selling, general, and administrative expenses, interest, other non-operating income or expense items, or taxes to segments.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company&#8217;s Engineered Steel Pressure Pipe (SPP) segment manufactures large-diameter, high-pressure steel pipeline systems for use in water infrastructure applications, which are primarily related to drinking water systems. These products are also used for hydroelectric power systems, wastewater systems, seismic resiliency, and other applications. In addition, SPP makes products for industrial plant piping systems and certain structural applications. SPP has manufacturing facilities located in Portland, Oregon; Adelanto and Tracy, California; Parkersburg, West Virginia; Saginaw, Texas; St.&#160;Louis, Missouri; and San Luis R&#237;o Colorado, Mexico.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company&#8217;s Precast Infrastructure and Engineered Systems (Precast) segment manufactures stormwater and wastewater technology products, high-quality precast and reinforced concrete products, including reinforced concrete pipe, manholes, box culverts, vaults, and catch basins, pump lift stations, oil water separators, biofiltration units, and other environmental and engineered solutions. Precast has manufacturing facilities located in Dallas, Houston, and San Antonio, Texas; and Orem, Salt Lake City, and St. George, Utah.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
        F-
       <em style="font: inherit;">32</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table disaggregates revenue as well as other financial information based on the Company&#8217;s reportable segments (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock" id="D5E9B5CA-5D7C-4991-95CA-BA6FE7221425" escape="true" continuedAt="A079BA21-633E-42A5-B77F-AA4A391BAFB0">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Net sales:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875684" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">296,381</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875685" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">307,572</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875686" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">259,823</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875687" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">147,974</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875688" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">150,093</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875689" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-4">73,490</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875690" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">444,355</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875691" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">457,665</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875692" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">333,313</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Gross profit:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875693" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">42,427</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875694" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">44,473</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875695" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">31,281</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875696" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">35,215</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875697" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">41,382</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875698" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,973</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875699" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">77,642</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875700" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">85,855</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875701" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">44,254</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Depreciation and amortization expense:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875702" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-6">9,000</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875703" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,789</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875704" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,524</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875705" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,241</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875706" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,807</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875707" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,738</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875708" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">15,241</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875709" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">16,596</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875710" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,262</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Corporate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875711" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">565</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875712" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">507</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875713" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">362</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875714" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">15,806</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875715" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">17,103</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875716" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:DepreciationAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,624</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Capital expenditures:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107875717" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">11,154</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107875718" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,211</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c107875719" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,538</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875720" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,503</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875721" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,925</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875722" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,255</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875723" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">17,657</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875724" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">22,136</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875725" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,793</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Corporate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875726" contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">634</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875727" contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">693</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875728" contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">469</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875729" contextRef="d_2023-01-01_2023-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">18,291</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875730" contextRef="d_2022-01-01_2022-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">22,829</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875731" contextRef="d_2021-01-01_2021-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,262</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table disaggregates total assets based on the Company&#8217;s reportable segments (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:continuation id="A079BA21-633E-42A5-B77F-AA4A391BAFB0">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Total assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875740" contextRef="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-3">307,856</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875741" contextRef="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-3">307,924</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875742" contextRef="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-3">255,904</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875743" contextRef="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-4">256,520</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875744" contextRef="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-4">563,760</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875745" contextRef="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-3">564,444</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Corporate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875746" contextRef="i_2023-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-3">34,121</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c107875747" contextRef="i_2022-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-3">36,896</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875748" contextRef="i_2023-12-31" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-3">597,881</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c107875749" contextRef="i_2022-12-31" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-4">601,340</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:continuation>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><a id="notesend" title="notesend" href="#"></a></p>
  </ix:nonNumeric>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
      F-33
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
   &#160;
  </div>
  <div>
   &#160;
  </div>
  <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" id="c2569443" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Schedule</b>&#160;<b>II</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;"><b><a id="sched" title="sched" href="#"></a>NORTHWEST PIPE COMPANY</b></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;"><b>VALUATION AND QUALIFYING ACCOUNTS</b></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;">(Dollars in thousands)</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2023-01-01_2023-12-31" name="nwpx:SummaryOfValuationAndQualifyingAccountsTableTextBlock" id="c2569444" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Balance at Beginning of Period</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Charged to Profit and Loss</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Deduction from Reserves</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Balance at End of Period</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Year Ended December 31, 2023:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Allowance for doubtful accounts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875755" contextRef="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">369</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875756" contextRef="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">189</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875757" contextRef="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" format="ixt:num-dot-decimal" decimals="-3">437</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875758" contextRef="i_2023-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">121</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Valuation allowance for deferred income tax assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875759" contextRef="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,051</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875760" contextRef="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">696</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875761" contextRef="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" format="ixt:num-dot-decimal" decimals="-3">106</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875762" contextRef="i_2023-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,641</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Year Ended December 31, 2022:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Allowance for doubtful accounts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875763" contextRef="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">503</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875764" contextRef="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">442</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875765" contextRef="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" format="ixt:num-dot-decimal" decimals="-3">576</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875766" contextRef="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">369</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Valuation allowance for deferred income tax assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875767" contextRef="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,899</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875768" contextRef="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">254</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875769" contextRef="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" format="ixt:num-dot-decimal" decimals="-3">102</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875770" contextRef="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,051</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Year Ended December 31, 2021:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Allowance for doubtful accounts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875771" contextRef="i_2020-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">767</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875772" contextRef="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">653</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875773" contextRef="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" format="ixt:num-dot-decimal" decimals="-3">917</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875774" contextRef="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">503</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Valuation allowance for deferred income tax assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875775" contextRef="i_2020-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,228</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875776" contextRef="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c107875777" contextRef="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" format="ixt:num-dot-decimal" decimals="-3">329</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c107875778" contextRef="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember" unitRef="USD" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,899</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM">
        S-
       <em style="font: inherit;">1</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
  </ix:nonNumeric>
  <div>
   &#160;
  </div>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>SIGNATURES</b></p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">Pursuant to the requirements of Section&#160;13 or 15(d) of the Securities Exchange Act of 1934, the registrant has duly caused this report to be signed on its behalf by the undersigned, thereunto duly authorized, on the 5th&#160;day of March 2024.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="vertical-align:top;width:22.4%;">&#160;</td>
     <td colspan="2" style="vertical-align:top;width:23.9%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">NORTHWEST PIPE COMPANY&#160;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:22.4%;">&#160;</td>
     <td style="vertical-align:top;width:1.9%;">&#160;</td>
     <td style="vertical-align:bottom;width:22%;">&#160;</td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:22.4%;">&#160;</td>
     <td style="vertical-align:top;width:1.9%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">By</p> </td>
     <td style="border-bottom:solid 1px #000000;vertical-align:top;width:22%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/S/&#160;&#160;&#160;&#160;SCOTT&#160;MONTROSS&#160;&#160;&#160;&#160;&#160;&#160;&#160;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:22.4%;">&#160;</td>
     <td style="vertical-align:top;width:1.9%;">&#160;</td>
     <td style="vertical-align:top;width:22%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Scott</b>&#160;<b>Montross</b></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:22.4%;">&#160;</td>
     <td style="vertical-align:top;width:1.9%;">&#160;</td>
     <td style="vertical-align:top;width:22%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Director, President, and Chief</b>&#160;<b>Executive</b>&#160;<b>Officer</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt 0pt 0pt 8pt;">Pursuant to the requirements of the Securities Exchange Act of 1934, this report has been signed below by the following persons on behalf of the registrant and in the capacities indicated, on the 5th&#160;day of March 2024.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;">
   <tbody>
    <tr>
     <td style="border-bottom:solid 1px #000000;vertical-align:bottom;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Signature</b></p> </td>
     <td style="vertical-align:bottom;width:0.1%;">&#160;</td>
     <td style="border-bottom:solid 1px #000000;vertical-align:bottom;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Title</b></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:4.7%;">&#160;</td>
     <td style="vertical-align:middle;width:0.1%;">&#160;</td>
     <td style="vertical-align:middle;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="border-bottom:solid 1px #000000;vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/S/&#160;&#160;&#160;&#160;RICHARD&#160;A.&#160;ROMAN&#160;&#160;&#160;&#160;&#160;&#160;&#160;</p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:bottom;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Director and Chairman of the Board</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Richard</b>&#160;<b>A.</b>&#160;<b>Roman</b></p> </td>
     <td style="vertical-align:middle;width:0.1%;">&#160;</td>
     <td style="vertical-align:middle;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:4.7%;">&#160;</td>
     <td style="vertical-align:middle;width:0.1%;">&#160;</td>
     <td style="vertical-align:middle;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="border-bottom:solid 1px #000000;vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/S/&#160;&#160;&#160;&#160;SCOTT&#160;MONTROSS&#160;&#160;&#160;&#160;&#160;&#160;&#160;</p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:bottom;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt 0pt 0pt 9pt;text-indent:-9pt;">Director, President, and Chief&#160;Executive&#160;Officer</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Scott</b>&#160;<b>Montross</b></p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(principal&#160;executive&#160;officer)</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:4.7%;">&#160;</td>
     <td style="vertical-align:middle;width:0.1%;">&#160;</td>
     <td style="vertical-align:middle;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="border-bottom:solid 1px #000000;vertical-align:bottom;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/S/&#160;&#160;&#160;&#160;AARON&#160;WILKINS&#160;&#160;&#160;&#160;&#160;&#160;&#160;</p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:bottom;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt 0pt 0pt 10pt;text-indent:-10pt;">Senior&#160;Vice&#160;President, Chief&#160;Financial&#160;Officer, and Corporate&#160;Secretary</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Aaron</b>&#160;<b>Wilkins</b></p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(principal&#160;financial&#160;and accounting&#160;officer)</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;">&#160;</td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="border-bottom:solid 1px #000000;vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/S/&#160;&#160;&#160;&#160;MICHAEL&#160;C.&#160;FRANSON&#160;&#160;&#160;&#160;&#160;&#160;&#160;</p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:bottom;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Director</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Michael</b>&#160;<b>C.</b>&#160;<b>Franson</b></p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:4.7%;">&#160;</td>
     <td style="vertical-align:middle;width:0.1%;">&#160;</td>
     <td style="vertical-align:middle;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="border-bottom:solid 1px #000000;vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/S/&#160;&#160;&#160;&#160;AMANDA&#160;L.&#160;JULIAN&#160;&#160;&#160;&#160;&#160;&#160;&#160;</p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:bottom;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Director</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Amanda</b>&#160;<b>L.</b>&#160;<b>Julian</b></p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;">&#160;</td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="border-bottom:solid 1px #000000;vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/S/&#160;&#160;&#160;&#160;KEITH&#160;R.&#160;LARSON&#160;&#160;&#160;&#160;&#160;&#160;&#160;</p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:bottom;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Director</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Keith</b>&#160;<b>R.</b>&#160;<b>Larson</b></p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;">&#160;</td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="border-bottom:solid 1px #000000;vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/S/&#160;&#160;&#160;&#160;IRMA LOCKRIDGE&#160;&#160;&#160;&#160;&#160;&#160;&#160;</p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:bottom;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Director</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Irma</b>&#160;<b>Lockridge</b></p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;">&#160;</td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;">&#160;</td>
    </tr>

    <tr>
     <td style="border-bottom:solid 1px #000000;vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/S/&#160;&#160;&#160;&#160;JOHN&#160;T.&#160;PASCHAL&#160;&#160;&#160;&#160;&#160;&#160;&#160;</p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:bottom;width:4.8%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Director</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:4.7%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>John</b>&#160;<b>T.</b>&#160;<b>Paschal</b></p> </td>
     <td style="vertical-align:top;width:0.1%;">&#160;</td>
     <td style="vertical-align:top;width:4.8%;">&#160;</td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <div class="LAST-PAGE-BREAK">
   <div class="PGFTR">
    <div class="hf-row">
     <div class="hf-cell PGNUM">
      &#160;
     </div>
    </div>
   </div>
  </div>
 </body>
</html>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-21.1
<SEQUENCE>2
<FILENAME>ex_602812.htm
<DESCRIPTION>EXHIBIT 21.1
<TEXT>
<html><head>
	<title>ex_602812.htm</title>

	<!-- Generated by ThunderDome Portal - 12/19/2023 7:51:30 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-size:10pt;font-family:'Times New Roman';padding:0in .1in;">
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt;"><b>EXHIBIT</b>&nbsp;<b>21.1</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>NORTHWEST PIPE COMPANY</b></p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>SUBSIDIARIES OF THE REGISTRANT</b></p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>As of December</b>&nbsp;<b>31, 2023</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Permalok Corporation, Missouri</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Thompson Tank Holdings, Inc., Oregon</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">NWPC, LLC, Delaware</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">WTG Holding U.S., Inc., California</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Bolenco Corporation, California</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">NWPC de SLRC, S de RL de CV, Mexico</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">NWPC de Mexico, S de RL de CV, Mexico</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Rio Co., S de RL de CV, Mexico</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Corporacion Californiana de Tuberias APS, S de RL de CV, Mexico</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Geneva Pipe and Precast Company, Utah</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Park Environmental Equipment,&nbsp;LLC, Texas</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-23.1
<SEQUENCE>3
<FILENAME>ex_602813.htm
<DESCRIPTION>EXHIBIT 23.1
<TEXT>
<html><head>
	<title>ex_602813.htm</title>
	<!-- Generated by ThunderDome Portal - 2/29/2024 9:13:47 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-size:10pt;font-family:'Times New Roman';padding:0in .1in;">
<p style="text-align: right; font-size: 10pt; font-family: &quot;Times New Roman&quot;; margin: 0pt;"><b>Exhibit</b>&nbsp;<b>23.1</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Consent of Independent Registered Public Accounting Firm</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">We consent to the incorporation by reference in the Registration Statements on Form&nbsp;S&#8209;3 (No.&nbsp;333&#8209;275691) and Form&nbsp;S&#8209;8 (No.&nbsp;333&#8209;190854, No.&nbsp;333&#8209;152573 and No.&nbsp;333&#8209;265658) of Northwest Pipe Company and Subsidiaries (the &#8220;Company&#8221;), of our report dated March&nbsp;5, 2024, relating to the consolidated financial statements and schedule of the Company and the effectiveness of internal control over financial reporting of the Company appearing in this Annual Report on Form&nbsp;10&#8209;K of the Company for the year ended December&nbsp;31, 2023.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">/s/ Moss&nbsp;Adams&nbsp;LLP</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Portland, Oregon</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">March&nbsp;5, 2024</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.1
<SEQUENCE>4
<FILENAME>ex_602814.htm
<DESCRIPTION>EXHIBIT 31.1
<TEXT>
<html><head>
	<title>ex_602814.htm</title>

	<!-- Generated by ThunderDome Portal - 12/19/2023 7:52:56 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-size:10pt;font-family:'Times New Roman';padding:0in .1in;">
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt;"><b>EXHIBIT</b>&nbsp;<b>31.1</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>CERTIFICATION PURSUANT TO 18</b>&nbsp;<b>U.S.C. SECTION</b>&nbsp;<b>1350,</b></p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>AS ADOPTED PURSUANT TO SECTION</b>&nbsp;<b>302 OF THE SARBANES-OXLEY ACT OF 2002</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt 0pt 0pt 8pt;">I, Scott Montross, certify that:</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:5%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">1.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">I have reviewed this Annual Report on Form&nbsp;10&#8209;K of Northwest Pipe Company;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:5%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">2.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:5%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">3.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects&nbsp;the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:5%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">4.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The registrant&#8217;s other certifying officer(s) and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules&nbsp;13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules&nbsp;13a-15(f) and 15d-15(f)) for the registrant and have:</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">a.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">b.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">c.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Evaluated the effectiveness of the registrant&#8217;s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">d.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant&#8217;s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:5%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">5.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The registrant&#8217;s other certifying officer(s) and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions):</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">a.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant&#8217;s ability to record, process, summarize and report financial information; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">b.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:23.2%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Date: March&nbsp;5, 2024</p>
			</td>
			<td style="vertical-align:bottom;width:1.4%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">By:</p>
			</td>
			<td style="border-bottom:solid 1px #000000;vertical-align:bottom;width:21.8%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/s/&nbsp;&nbsp;&nbsp;&nbsp;SCOTT&nbsp;MONTROSS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:23.2%;">&nbsp;</td>
			<td style="vertical-align:bottom;width:1.4%;">&nbsp;</td>
			<td style="vertical-align:bottom;width:21.8%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Scott</b>&nbsp;<b>Montross</b></p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:23.2%;">&nbsp;</td>
			<td style="vertical-align:bottom;width:1.4%;">&nbsp;</td>
			<td style="vertical-align:bottom;width:21.8%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Director, President, and Chief</b>&nbsp;<b>Executive</b>&nbsp;<b>Officer</b></p>

			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(principal</b>&nbsp;<b>executive</b>&nbsp;<b>officer)</b></p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.2
<SEQUENCE>5
<FILENAME>ex_602815.htm
<DESCRIPTION>EXHIBIT 31.2
<TEXT>
<html><head>
	<title>ex_602815.htm</title>

	<!-- Generated by ThunderDome Portal - 12/19/2023 7:53:41 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-size:10pt;font-family:'Times New Roman';padding:0in .1in;">
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt;">E<b>XHIBIT</b>&nbsp;<b>31.2</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>CERTIFICATION</b>&nbsp;<b>PURSUANT TO 18</b>&nbsp;<b>U.S.C. SECTION</b>&nbsp;<b>1350,</b></p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>AS ADOPTED PURSUANT TO SECTION</b>&nbsp;<b>302 OF THE SARBANES-OXLEY ACT OF 2002</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt 0pt 0pt 8pt;">I, Aaron Wilkins, certify that:</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:5%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">1.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">I have reviewed this Annual Report on Form&nbsp;10&#8209;K of Northwest Pipe Company;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:5%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">2.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:5%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">3.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects&nbsp;the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:5%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">4.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The registrant&#8217;s other certifying officer(s) and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules&nbsp;13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules&nbsp;13a-15(f) and 15d-15(f)) for the registrant and have:</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">a.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">b.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">c.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Evaluated the effectiveness of the registrant&#8217;s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">d.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant&#8217;s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:5%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">5.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The registrant&#8217;s other certifying officer(s) and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent function):</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">a.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant&#8217;s ability to record, process, summarize and report financial information; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:8.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">b.</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:23.2%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Date: March&nbsp;5, 2024</p>
			</td>
			<td style="vertical-align:bottom;width:1.4%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">By:</p>
			</td>
			<td style="border-bottom:solid 1px #000000;vertical-align:bottom;width:21.8%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/s/&nbsp;&nbsp;&nbsp;&nbsp;AARON&nbsp;WILKINS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:23.2%;">&nbsp;</td>
			<td style="vertical-align:bottom;width:1.4%;">&nbsp;</td>
			<td style="vertical-align:bottom;width:21.8%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Aaron</b>&nbsp;<b>Wilkins</b></p>

			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Senior</b>&nbsp;<b>Vice</b>&nbsp;<b>President, Chief</b>&nbsp;<b>Financial</b>&nbsp;<b>Officer, and Corporate</b>&nbsp;<b>Secretary</b></p>

			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(principal</b>&nbsp;<b>financial</b>&nbsp;<b>officer)</b></p>
			</td>
		</tr>

</table>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt 0pt 0pt 16pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt 0pt 0pt 16pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt 0pt 0pt 16pt;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-32.1
<SEQUENCE>6
<FILENAME>ex_602816.htm
<DESCRIPTION>EXHIBIT 32.1
<TEXT>
<html><head>
	<title>ex_602816.htm</title>

	<!-- Generated by ThunderDome Portal - 12/19/2023 7:55:02 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-size:10pt;font-family:'Times New Roman';padding:0in .1in;">
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt;"><b>EXHIBIT</b>&nbsp;<b>32.1</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>CERTIFICATION PURSUANT TO 18</b>&nbsp;<b>U.S.C. SECTION</b>&nbsp;<b>1350,</b></p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>AS ADOPTED PURSUANT TO SECTION</b>&nbsp;<b>906 OF THE SARBANES-OXLEY ACT OF 2002</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In connection with the Annual Report of Northwest Pipe Company (&#8220;Company&#8221;) on Form&nbsp;10&#8209;K for the period ended December&nbsp;31, 2023 as filed with the Securities and Exchange Commission on the date hereof (&#8220;Report&#8221;), I, Scott Montross, Director, President, and Chief Executive Officer of the Company, certify, pursuant to 18&nbsp;U.S.C. &#167;&nbsp;1350, as adopted pursuant to &#167;&nbsp;906 of the Sarbanes-Oxley Act of 2002, that:</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">(1)</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Report fully complies with the requirements of Section&nbsp;13(a) or 15(d) of the Securities Exchange Act of 1934; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">(2)</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The information contained in the Report fairly presents, in all material respects, the financial condition and results of operations of the Company.</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="border-bottom:solid 1px #000000;vertical-align:top;width:23.9%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/s/&nbsp;SCOTT&nbsp;MONTROSS</p>
			</td>
			<td style="vertical-align:top;width:22.4%;">&nbsp;</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:23.9%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Scott Montross</b></p>
			</td>
			<td style="vertical-align:top;width:22.4%;">&nbsp;</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:23.9%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Director, President, and Chief</b>&nbsp;<b>Executive</b>&nbsp;<b>Officer</b></p>
			</td>
			<td style="vertical-align:top;width:22.4%;">&nbsp;</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">March&nbsp;5, 2024</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-32.2
<SEQUENCE>7
<FILENAME>ex_602817.htm
<DESCRIPTION>EXHIBIT 32.2
<TEXT>
<html><head>
	<title>ex_602817.htm</title>

	<!-- Generated by ThunderDome Portal - 12/19/2023 7:55:25 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-size:10pt;font-family:'Times New Roman';padding:0in .1in;">
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt;"><b>EXHIBIT</b>&nbsp;<b>32.2</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>CERTIFICATION PURSUANT TO 18</b>&nbsp;<b>U.S.C. SECTION</b>&nbsp;<b>1350,</b></p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>AS ADOPTED PURSUANT TO SECTION</b>&nbsp;<b>906 OF THE SARBANES-OXLEY ACT OF 2002</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In connection with the Annual Report of Northwest Pipe Company (&#8220;Company&#8221;) on Form&nbsp;10&#8209;K for the period ended December&nbsp;31, 2023 as filed with the Securities and Exchange Commission on the date hereof (&#8220;Report&#8221;), I, Aaron Wilkins, Senior Vice President, Chief Financial Officer, and Corporate Secretary of the Company, certify, pursuant to 18&nbsp;U.S.C. &#167;&nbsp;1350, as adopted pursuant to &#167;&nbsp;906 of the Sarbanes-Oxley Act of 2002, that:</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">(1)</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Report fully complies with the requirements of Section&nbsp;13(a) or 15(d) of the Securities Exchange Act of 1934; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">(2)</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The information contained in the Report fairly presents, in all material respects, the financial condition and result of operations of the Company.</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="border-bottom:solid 1px #000000;vertical-align:top;width:23.9%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;">/s/&nbsp;&nbsp;&nbsp;&nbsp;AARON&nbsp;WILKINS</p>
			</td>
			<td style="vertical-align:top;width:22.4%;">&nbsp;</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:23.9%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Aaron</b>&nbsp;<b>Wilkins</b></p>
			</td>
			<td style="vertical-align:top;width:22.4%;">&nbsp;</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:23.9%;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Senior</b>&nbsp;<b>Vice</b>&nbsp;<b>President, Chief</b>&nbsp;<b>Financial</b>&nbsp;<b>Officer, and Corporate</b>&nbsp;<b>Secretary</b></p>
			</td>
			<td style="vertical-align:top;width:22.4%;">&nbsp;</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">March&nbsp;5, 2024</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-97
<SEQUENCE>8
<FILENAME>ex_608626.htm
<DESCRIPTION>EXHIBIT 97
<TEXT>
<html><head>
	<title>ex_608626.htm</title>
	<!-- Generated by ThunderDome Portal - 2/7/2024 12:39:45 AM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-size: 10pt; font-family: &quot;Times New Roman&quot;; padding: 0in 0.1in; cursor: auto;">
<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:right;margin:0pt;"><b>EXHIBIT</b>&nbsp;<b>97</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>POLICY RELATING TO RECOVERY OF ERRONEOUSLY AWARDED COMPENSATION</b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Incentive Compensation Recovery Policy</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Adopted September&nbsp;14, 2023</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Introduction</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The Board of Directors (&#8220;<b><i>Board</i></b>&#8221;) of Northwest Pipe Company (&#8220;<b><i>Company</i></b>&#8221;) has determined that it is in the best interests of the Company and its shareholders to maintain and promote a culture emphasizing integrity and accountability by, among other things, reinforcing the pay-for-performance compensation philosophy applicable to the officers and employees of the Company. The Board has therefore adopted the accompanying policy (&#8220;<b><i>Policy</i></b>&#8221;) to permit the Company to recoup certain executive compensation in the event of an accounting restatement that results from material noncompliance with financial reporting requirements under the Securities Exchange Act of 1934 (&#8220;<b><i>Exchange</i></b><i> </i><b><i>Act</i></b>&#8221;) and other federal securities laws. This Policy is intended to comply with the requirements of Exchange Act Section&nbsp;10D and Rule&nbsp;10D&#8209;1 thereunder, and with Nasdaq Rule&nbsp;5608 adopted in conformity therewith.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Administration</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">This Policy shall be administered by the Board unless delegated to its Compensation Committee (&#8220;<b><i>Administrator</i></b>&#8221;). Any determinations made by the Administrator shall be final and binding on all affected individuals.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Executive Officers</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">This Policy applies to the Company&#8217;s current and former Executive Officers. For purposes of this Policy, an &#8220;<b><i>Executive Officer</i></b>&#8221; includes the Company&#8217;s Chief Executive Officer, president, principal financial officer, principal accounting officer (or if there is no such accounting officer, the controller), any vice-president of the Company in charge of a principal business unit, division, or function (such as sales, administration, or finance), any other officer who performs a policy-making function, or any other person who performs similar policy-making functions for the Company or its subsidiaries. The interpretation of whether an individual is or was serving as an Executive Officer shall be made in a manner consistent with Nasdaq Rule&nbsp;5608(d) and Exchange Act Rule&nbsp;16a&#8209;1(f).</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Recoupment; Accounting Restatement</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">In the event the Company is required to restate its financial statements due to the Company&#8217;s material noncompliance with any financial reporting requirement under the securities laws (an &#8220;<b>Accounting Restatement</b>&#8221;), the Administrator will reasonably promptly require reimbursement or forfeiture of any excess Incentive Compensation received by any Executive Officer during the three completed fiscal years immediately preceding the date on which the Company is required to prepare an Accounting Restatement, provided that such reimbursement obligation or forfeiture event shall only arise with respect to an Executive Officer after such person became an Executive Officer and so long as such person served as an Executive Officer at any time during the three year recovery period. For purposes of this Policy, an Accounting Restatement shall include any required accounting restatement to correct an error in previously issued financial statements that is material to the previously issued financial statements, or that would result in a material misstatement if the error were corrected in the current period or left uncorrected in the current period. For purposes of determining the relevant recovery period, the date that a Company is required to restate its financial statements is the date the Company&#8217;s Board, a committee of the Board, or the officer or officers of the Company authorized to take such action if Board action is not required, concludes, or reasonably should have concluded, that the Company is required to prepare an Accounting Restatement. The recovery of erroneously awarded compensation is required on a &#8220;no fault&#8221; basis, without regard to whether any misconduct occurred or an executive officer&#8217;s responsibility for the erroneous financial statements. Any amount to be recovered will be calculated without regard to any taxes previously paid. The Administrator&#8217;s determination whether an event of material noncompliance has occurred shall be based upon the facts and circumstances and upon then-existing judicial and administrative interpretations.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
<div class="PGFTR" style="text-align: center; width: 100%">
<div class="hf-row">
<div class="hf-cell PGNUM" style="text-align: right;">Page 1</div>
</div>
</div>

<hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000">
<div class="PGHDR" style="text-align: left; width: 100%">
<div class="hf-row">
<div class="hf-cell TOCLink">&nbsp;</div>
</div>
</div>
</div>

<p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Incentive Compensation</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">For purposes of this Policy, Incentive Compensation means any compensation that is granted, earned, or vested based wholly or in part on the attainment of a financial reporting measure. For such purposes, a &#8220;<b><i>financial reporting measure</i></b>&#8221; means any measure that is determined and presented in accordance with the accounting principles used in an issuer&#8217;s financial statements, and any measure that is derived wholly or in part from such measures, as well as an issuer&#8217;s stock price and total shareholder return. Without limiting the generality of the foregoing, Incentive Compensation includes:</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Annual bonuses and other short- and long-term cash incentives.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Stock options.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Stock appreciation rights.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Restricted stock.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Restricted stock units.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Performance shares.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Performance units.</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Financial reporting measures include any measure that is determined and presented in accordance with the accounting principles used in preparing the Company&#8217;s financial statements, any measure that is derived wholly or in part from such measures, stock price and/or total shareholder return.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Equity awards that vest exclusively upon completion of a specified employment period, without any performance condition, and bonus awards that are discretionary or based on subjective goals or goals unrelated to financial reporting measures, do not constitute Incentive Compensation.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Excess Incentive Compensation: Amount Subject to Recovery</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The amount to be recovered will be the amount of Incentive Compensation received that exceeds the amount of Incentive Compensation that otherwise would have been received had it been determined based on the restated amounts, as determined by the Administrator in its sole discretion. Incentive Compensation is deemed to have been received in the fiscal period during which the financial reporting measure specified in the relevant compensatory award is attained, even if the grant or payment of the Incentive Compensation occurs after the end of that period.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">If the Administrator cannot determine the amount of excess Incentive Compensation received by the Executive Officer directly from the information in the accounting restatement, then it will make its determination based on a reasonable estimate of the effect of the accounting restatement, and such determination shall be conclusive and binding.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Method of Recoupment; Limitations on Enforcement</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The Administrator will determine, in its sole discretion, the methods for recouping Incentive Compensation hereunder which may include any one or more of the following methods, without limitation and in such combinations as the Administrator deems appropriate:</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Requiring reimbursement of cash Incentive Compensation previously paid.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Seeking recovery of any gain realized on the vesting, exercise, settlement, sale, transfer, or other disposition of any equity-based awards.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Offsetting the recouped amount from any compensation otherwise owed to the Executive Officer.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Cancelling or rescinding some or all outstanding vested or unvested equity awards.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Any other remedial and recovery action permitted by law, as determined by the Administrator.</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
<div class="PGFTR" style="text-align: center; width: 100%">
<div class="hf-row">
<div class="hf-cell PGNUM" style="text-align: right;">Page 2</div>
</div>
</div>

<hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000">
<div class="PGHDR" style="text-align: left; width: 100%">
<div class="hf-row">
<div class="hf-cell TOCLink">&nbsp;</div>
</div>
</div>
</div>

<p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Notwithstanding the foregoing, the Administrator may determine not to require recoupment of compensation when any of the following circumstances exist:</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="font-family:Times New Roman;font-size:10pt;width:100%;margin-left:auto;margin-right:auto;">

		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The direct expense to be paid to a third party to assist in enforcing this Policy would exceed the amount to be recovered.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Recovery would violate any federal or state law that was in effect on the date this Policy was adopted, or that would otherwise subject the Company to material risk of a violation of law as stated in a written opinion of counsel to the Company.</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:3.3%;">&nbsp;</td>
			<td style="vertical-align:top;width:3.3%;">
			<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#8226;</p>
			</td>
			<td style="vertical-align:top;width:auto;">
			<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Recovery would cause a broad-based retirement plan to fail to meet the tax-qualification requirements of 26&nbsp;U.S.C.&nbsp;401(a)(13) or 26&nbsp;U.S.C.&nbsp;411(a) and regulations thereunder.</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The Administrator may apply these provisions differently to each applicable Executive Officer in its discretion. Before concluding that pursuit is impracticable, the Company must first make reasonable attempts to recover the Incentive Compensation and must provide documentation to Nasdaq describing such attempts.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>No Indemnification</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The Company shall not indemnify any Executive Officers against the loss of any incorrectly awarded Incentive Compensation or against any action or proceeding resulting in a dispute with respect thereto.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Interpretation</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The Administrator is authorized to interpret and construe this Policy and to make all determinations necessary, appropriate, or advisable for the administration of this Policy. It is intended that this Policy be interpreted in a manner that is consistent with the requirements of Exchange Act Section&nbsp;10D and Rule&nbsp;10D&#8209;1, Nasdaq Rule&nbsp;5608, and any other applicable law or regulation governing the forfeiture, disgorgement, or recoupment of executive compensation. To the extent that any provision of this Policy is found to be unenforceable or invalid under any applicable law, such provision shall be applied to the maximum extent permitted and shall automatically be deemed amended in a manner consistent with its objectives to the extent necessary to conform to applicable law. The invalidity or unenforceability of any provision of this Policy shall not affect the validity or enforceability of any other provision of this Policy.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Effective Date; Applicability</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">This Policy shall be effective as of <b>December</b>&nbsp;<b>1, 2023</b> (the &#8220;<b><i>Effective Date</i></b>&#8221;) and shall apply to Incentive Compensation that is received by Executive Officers on or after October&nbsp;2, 2023.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Periodic Review; Amendment; Termination</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The Administrator may amend this Policy from time to time in its discretion and shall amend this Policy as it deems necessary to reflect modifications in or amendments to any Nasdaq listing requirement or any regulation adopted by the Securities and Exchange Commission. The Administrator may terminate this Policy at any time; provided, however, that this Policy will not be terminated under circumstances that would cause the Company to fail to comply with applicable laws, regulations, or Nasdaq listing requirements.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Other Recoupment Rights</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Without by implication limited the foregoing, following a restatement of the Company&#8217;s financial statements, the Company also shall be entitled to recover any compensation received by the Chief Executive Officer and Chief Financial Officer that is required to be recovered by Section&nbsp;304 of the Sarbanes-Oxley Act of 2002. The Administrator may require that any employment agreement, equity award agreement, or similar agreement entered into on or after the Effective Date shall, as a condition to the grant of any benefit thereunder, require an Executive Officer to agree to abide by the terms of this Policy and to cooperate in the recoupment of any Incentive Compensation to be recovered hereunder. Any right of recoupment under this Policy is in addition to, and not in lieu of, any other remedies or rights of recoupment that may be available to the Company pursuant to the terms of any similar policy in any employment agreement, equity award agreement, or similar agreement and any other legal remedies available to the Company.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
<div class="PGFTR" style="text-align: center; width: 100%">
<div class="hf-row">
<div class="hf-cell PGNUM" style="text-align: right;">Page 3</div>
</div>
</div>

<hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000">
<div class="PGHDR" style="text-align: left; width: 100%">
<div class="hf-row">
<div class="hf-cell TOCLink">&nbsp;</div>
</div>
</div>
</div>

<p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Adjustments to Unvested Incentive-Based Compensation</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">If the Administrator, in its sole discretion, determines that the performance metrics of outstanding but unvested Incentive Compensation were established using financial reporting measures that were impacted by an Accounting Restatement, the Administrator, in its sole discretion, may adjust such Financial Reporting Measures or modify such Incentive Compensation, in such manner as the Administrator deems appropriate in its sole discretion.</p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><u>Successors</u></b></p>

<p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">This Policy shall be binding and enforceable against all Executive Officers and their beneficiaries, heirs, executors, administrators, or other legal representatives.</p>

<p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: right;">Page 4</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.SCH
<SEQUENCE>9
<FILENAME>nwpx-20231231.xsd
<DESCRIPTION>XBRL TAXONOMY EXTENSION SCHEMA
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 02:45PM UTC 2024-03-05--><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:country="http://xbrl.sec.gov/country/2023" xmlns:currency="http://xbrl.sec.gov/currency/2023" xmlns:dei="http://xbrl.sec.gov/dei/2023" xmlns:dtr-types="http://www.xbrl.org/dtr/type/2020-01-21" xmlns:ecd="http://xbrl.sec.gov/ecd/2023" xmlns:exch="http://xbrl.sec.gov/exch/2023" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:naics="http://xbrl.sec.gov/naics/2023" xmlns:nwpx="http://www.nwpipe.com/20231231" xmlns:sic="http://xbrl.sec.gov/sic/2023" xmlns:srt="http://fasb.org/srt/2023" xmlns:srt-types="http://fasb.org/srt-types/2023" xmlns:stpr="http://xbrl.sec.gov/stpr/2023" xmlns:us-gaap="http://fasb.org/us-gaap/2023" xmlns:us-types="http://fasb.org/us-types/2023" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.nwpipe.com/20231231">
  <xsd:import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/naics/2023" schemaLocation="https://xbrl.sec.gov/naics/2023/naics-2023.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/country/2023" schemaLocation="https://xbrl.sec.gov/country/2023/country-2023.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/exch/2023" schemaLocation="https://xbrl.sec.gov/exch/2023/exch-2023.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/dei/2023" schemaLocation="https://xbrl.sec.gov/dei/2023/dei-2023.xsd"/>
  <xsd:import namespace="http://fasb.org/srt/2023" schemaLocation="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/sic/2023" schemaLocation="https://xbrl.sec.gov/sic/2023/sic-2023.xsd"/>
  <xsd:import namespace="http://fasb.org/us-types/2023" schemaLocation="https://xbrl.fasb.org/us-gaap/2023/elts/us-types-2023.xsd"/>
  <xsd:import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/stpr/2023" schemaLocation="https://xbrl.sec.gov/stpr/2023/stpr-2023.xsd"/>
  <xsd:import namespace="http://fasb.org/srt-types/2023" schemaLocation="https://xbrl.fasb.org/srt/2023/elts/srt-types-2023.xsd"/>
  <xsd:import namespace="http://fasb.org/us-gaap/2023" schemaLocation="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/dtr/type/2020-01-21" schemaLocation="https://www.xbrl.org/dtr/type/2020-01-21/types.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/currency/2023" schemaLocation="https://xbrl.sec.gov/currency/2023/currency-2023.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/ecd/2023" schemaLocation="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/2009/role/negated" schemaLocation="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd"/>
  <xsd:annotation>
    <xsd:appinfo>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="nwpx-20231231_lab.xml" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="nwpx-20231231_cal.xml" xlink:role="http://www.xbrl.org/2003/role/calculationLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="nwpx-20231231_def.xml" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="nwpx-20231231_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:type="simple"/>
      <link:roleType id="statement-document-and-entity-information" roleURI="http://www.nwpipe.com/20231231/role/statement-document-and-entity-information">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">000 - Document - Document And Entity Information</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-operations" roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">001 - Statement - Consolidated Statements of Operations</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-comprehensive-income" roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">002 - Statement - Consolidated Statements of Comprehensive Income</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-balance-sheets" roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">003 - Statement - Consolidated Balance Sheets</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-balance-sheets-parentheticals" roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">004 - Statement - Consolidated Balance Sheets (Parentheticals)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-stockholders-equity" roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">005 - Statement - Consolidated Statements of Stockholders' Equity</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-stockholders-equity-parentheticals" roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">006 - Statement - Consolidated Statements of Stockholders' Equity (Parentheticals)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-cash-flows" roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">007 - Statement - Consolidated Statements of Cash Flows</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-cash-flows-parentheticals" roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">008 - Statement - Consolidated Statements of Cash Flows (Parentheticals)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-1-organization" roleURI="http://www.nwpipe.com/20231231/role/statement-note-1-organization">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995455 - Disclosure - Note 1 - Organization</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-2-summary-of-significant-accounting-policies" roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995456 - Disclosure - Note 2 - Summary of Significant Accounting Policies</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-business-combinations" roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995457 - Disclosure - Note 3 - Business Combinations</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-inventories" roleURI="http://www.nwpipe.com/20231231/role/statement-note-4-inventories">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995458 - Disclosure - Note 4 - Inventories</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-property-and-equipment" roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995459 - Disclosure - Note 5 - Property and Equipment</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-intangible-assets-" roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995460 - Disclosure - Note 6 - Goodwill and Intangible Assets</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-current-debt" roleURI="http://www.nwpipe.com/20231231/role/statement-note-7-current-debt">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995461 - Disclosure - Note 7 - Current Debt</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-credit-agreement" roleURI="http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995462 - Disclosure - Note 8 - Credit Agreement</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-leases" roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995463 - Disclosure - Note 9 - Leases</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-fair-value-measurements" roleURI="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995464 - Disclosure - Note 10 - Fair Value Measurements</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-derivative-instruments-and-hedging-activities" roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995465 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-stockholders-equity" roleURI="http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995466 - Disclosure - Note 12 - Stockholders' Equity</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-retirement-plans" roleURI="http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995467 - Disclosure - Note 13 - Retirement Plans</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-sharebased-compensation" roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995468 - Disclosure - Note 14 - Share-based Compensation</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-15-commitments-and-contingencies" roleURI="http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995469 - Disclosure - Note 15 - Commitments and Contingencies</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-revenue" roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995470 - Disclosure - Note 16 - Revenue</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-17-income-taxes" roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995471 - Disclosure - Note 17 - Income Taxes</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-accumulated-other-comprehensive-loss" roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995472 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-19-segment-information" roleURI="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995473 - Disclosure - Note 19 - Segment Information</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-schedule-ii-valuation-and-qualifying-accounts" roleURI="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995474 - Disclosure - Schedule II - Valuation and Qualifying Accounts</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-significant-accounting-policies-policies" roleURI="http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995475 - Disclosure - Significant Accounting Policies (Policies)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-2-summary-of-significant-accounting-policies-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995476 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-business-combinations-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995477 - Disclosure - Note 3 - Business Combinations (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-inventories-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995478 - Disclosure - Note 4 - Inventories (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-property-and-equipment-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995479 - Disclosure - Note 5 - Property and Equipment (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-intangible-assets-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995480 - Disclosure - Note 6 - Goodwill and Intangible Assets (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-leases-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995481 - Disclosure - Note 9 - Leases (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-fair-value-measurements-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995482 - Disclosure - Note 10 - Fair Value Measurements (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-derivative-instruments-and-hedging-activities-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995483 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-sharebased-compensation-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995484 - Disclosure - Note 14 - Share-based Compensation (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-revenue-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995485 - Disclosure - Note 16 - Revenue (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-17-income-taxes-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995486 - Disclosure - Note 17 - Income Taxes (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-accumulated-other-comprehensive-loss-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995487 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-19-segment-information-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995488 - Disclosure - Note 19 - Segment Information (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-schedule-ii-valuation-and-qualifying-accounts-tables" roleURI="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995489 - Disclosure - Schedule II - Valuation and Qualifying Accounts (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-1-organization-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995490 - Disclosure - Note 1 - Organization (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-2-summary-of-significant-accounting-policies-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995491 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995492 - Disclosure - Note 2 - Summary of Significant Accounting Policies - Loss Per Basic and Diluted Weighted Average Common Share Outstanding for Continuing and Discontinued Operations (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-business-combinations-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995493 - Disclosure - Note 3 - Business Combinations (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995494 - Disclosure - Note 3 - Business Combinations - Assets Acquired and Liabilities Assumed (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-2-business-combinations-intangible-assets-acquired-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995495 - Disclosure - Note 2 - Business Combinations - Intangible Assets Acquired (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-business-combinations-pro-forma-summary-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995496 - Disclosure - Note 3 - Business Combinations - Pro Forma Summary (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-inventories-components-of-inventories-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995497 - Disclosure - Note 4 - Inventories - Components of Inventories (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-property-and-equipment-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995498 - Disclosure - Note 5 - Property and Equipment (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-property-and-equipment-property-plant-and-equipment-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995499 - Disclosure - Note 5 - Property and Equipment - Property, Plant and Equipment (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-intangible-assets-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995500 - Disclosure - Note 6 - Goodwill and Intangible Assets (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995501 - Disclosure - Note 6 - Goodwill and Intangible Assets - Summary of Intangible Assets (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995502 - Disclosure - Note 6 - Goodwill and Intangible Assets - Summary of Estimated Amortization Expense (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-current-debt-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995503 - Disclosure - Note 7 - Current Debt (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-credit-agreement-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995504 - Disclosure - Note 8 - Credit Agreement (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-leases-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995505 - Disclosure - Note 9 - Leases (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995506 - Disclosure - Note 9 - Leases - Leases Recorded on the Consolidated Balance Sheet (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-leases-lease-cost-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995507 - Disclosure - Note 9 - Leases - Lease Cost (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-leases-future-maturities-of-lease-liabilities-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995508 - Disclosure - Note 9 - Leases - Future Maturities of Lease Liabilities (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995509 - Disclosure - Note 9 - Leases - Lease Terms and Discount Rates for Lease Liabilities (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995510 - Disclosure - Note 9 - Leases - Other Information Related to Operating and Finance Leases (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995511 - Disclosure - Note 10 - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on Recurring Basis (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-derivative-instruments-and-hedging-activities-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995512 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995513 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities - Summary of Gains (Losses) (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-stockholders-equity-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995514 - Disclosure - Note 12 - Stockholders' Equity (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-retirement-plans-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995515 - Disclosure - Note 13 - Retirement Plans (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-sharebased-compensation-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995516 - Disclosure - Note 14 - Share-based Compensation (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995517 - Disclosure - Note 14 - Share-based Compensation - Share-based Compensation Expense (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995518 - Disclosure - Note 14 - Share-based Compensation - RSU and PSA Activity (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-15-commitments-and-contingencies-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995519 - Disclosure - Note 15 - Commitments and Contingencies (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-revenue-1-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995520 - Disclosure - Note 16 - Revenue 1 (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-revenue-2-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995521 - Disclosure - Note 16 - Revenue 2 (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995522 - Disclosure - Note 16 - Revenue - Net Sales From Continuing Operations by Geographic Region (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-revenue-disaggregation-of-revenue-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995523 - Disclosure - Note 16 - Revenue - Disaggregation of Revenue (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995524 - Disclosure - Note 16 - Revenue - Contract With Customer Assets and Liabilities (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-17-income-taxes-details-textual" roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995525 - Disclosure - Note 17 - Income Taxes (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-17-income-taxes-income-loss-from-continuing-operations-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995526 - Disclosure - Note 17 - Income Taxes - Income (Loss) from Continuing Operations (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995527 - Disclosure - Note 17 - Income Taxes - Summary of Components of Income Tax Expense for Continuing Operations (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995528 - Disclosure - Note 17 - Income Taxes - Effective Income Tax Rate Reconciliation (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995529 - Disclosure - Note 17 - Income Taxes - Summary of Current and Noncurrent Deferred Tax Assets and Liabilities (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995530 - Disclosure - Note 17 - Income Taxes - Summary of Changes in Unrecognized Tax Benefits (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995531 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995532 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details) (Parentheticals)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995533 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Components of Accumulated Other Comprehensive Loss (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995534 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Reclassification of Accumulated Other Comprehensive Loss (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" roleURI="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995535 - Disclosure - Note 19 - Segment Information - Information Related to the Operations of the Company's Operating Segments (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" roleURI="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995536 - Disclosure - Schedule II - Valuation and Qualifying Accounts - Valuation and Qualifying Accounts (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:element abstract="true" id="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" name="AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_AccruedLiabilitiesPolicyTextBlock" name="AccruedLiabilitiesPolicyTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_AccruedLiabilityMember" name="AccruedLiabilityMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_AccruedPaymentsForRepurchaseOfCommonStock" name="AccruedPaymentsForRepurchaseOfCommonStock" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" name="AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" name="AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" name="AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="nwpx_AtthemarketOfferingMember" name="AtthemarketOfferingMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_BacklogMember" name="BacklogMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_BookOverdrafts" name="BookOverdrafts" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed" name="CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" name="CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" name="ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_ContractWithCustomerAssetBillings" name="ContractWithCustomerAssetBillings" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_ContractWithCustomerAssetOther" name="ContractWithCustomerAssetOther" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" name="ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_ContractWithCustomerLiabilityBillings" name="ContractWithCustomerLiabilityBillings" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_ContractWithCustomerLiabilityOther" name="ContractWithCustomerLiabilityOther" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization" name="DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_DebtInstrumentCovenantMinimumEbitda" name="DebtInstrumentCovenantMinimumEbitda" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="nwpx_DeferredCompensationPlanMember" name="DeferredCompensationPlanMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" name="DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_DeferredTaxAssetContractAssetsNet" name="DeferredTaxAssetContractAssetsNet" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_DeferredTaxAssetTradeReceivableNet" name="DeferredTaxAssetTradeReceivableNet" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="nwpx_DefinedContributionPlanMember" name="DefinedContributionPlanMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" name="DepreciationAndFinanceLeaseRightOfUseAssetAmortization" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_DocumentAndEntityInformation" name="DocumentAndEntityInformation" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" name="EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" name="EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent" name="EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent" name="EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_EngineeredSteelPressurePipeMember" name="EngineeredSteelPressurePipeMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_EquipmentUnderFinanceLeaseMember" name="EquipmentUnderFinanceLeaseMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_EquityOfferingMaximumOfferingAmount" name="EquityOfferingMaximumOfferingAmount" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_EstimatedCostOfEPASelectedRemedy" name="EstimatedCostOfEPASelectedRemedy" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_EstimatedTimeToCompleteSelectedEPARemedy" name="EstimatedTimeToCompleteSelectedEPARemedy" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_ForeignExchangeForward1Member" name="ForeignExchangeForward1Member" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_GainOnInsuranceProceeds" name="GainOnInsuranceProceeds" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" name="IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" name="InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_InterimFundingAgreementifaMember" name="InterimFundingAgreementifaMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_LeaseLiability" name="LeaseLiability" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_LeaseRightOfUseAsset" name="LeaseRightOfUseAsset" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" name="LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock" name="LesseeLeaseAssetsAndLiabilitiesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_LesseeLeaseDisclosureTextBlock" name="LesseeLeaseDisclosureTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_LesseeLiabilityMaturityTableTextBlock" name="LesseeLiabilityMaturityTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_LowerWillametteGroupMember" name="LowerWillametteGroupMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_MaximumSeniorLeverageRatio" name="MaximumSeniorLeverageRatio" nillable="true" substitutionGroup="xbrli:item" type="xbrli:pureItemType" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_MaximumSeniorLeverageRatioRequirement" name="MaximumSeniorLeverageRatioRequirement" nillable="true" substitutionGroup="xbrli:item" type="xbrli:pureItemType" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" name="NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_NonqualifiedRetirementSavingsPlanMember" name="NonqualifiedRetirementSavingsPlanMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_NoteToFinancialStatementDetailsTextual" name="NoteToFinancialStatementDetailsTextual" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_NotesToFinancialStatements" name="NotesToFinancialStatements" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_NotesToFinancialStatementsAbstract" name="NotesToFinancialStatementsAbstract" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_NumberOfActiveStockIncentivePlans" name="NumberOfActiveStockIncentivePlans" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" name="NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_NumberOfInactiveStockIncentivePlans" name="NumberOfInactiveStockIncentivePlans" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_NumberOfMajorCustomers" name="NumberOfMajorCustomers" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_NumberOfManufacturingFacilities" name="NumberOfManufacturingFacilities" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_NumberOfNoncontributoryDefinedBenefitPlans" name="NumberOfNoncontributoryDefinedBenefitPlans" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_NumberOfPotentiallyResponsibleParties" name="NumberOfPotentiallyResponsibleParties" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="nwpx_OneSppCustomerMember" name="OneSppCustomerMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_OperatingLossCarryforwardsExpirationYear" name="OperatingLossCarryforwardsExpirationYear" nillable="true" substitutionGroup="xbrli:item" type="xbrli:gYearItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived" name="OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" name="OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_OtherLongtermLiabilitiesMember" name="OtherLongtermLiabilitiesMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_ParkEnvironmentalEquipmentLlcMember" name="ParkEnvironmentalEquipmentLlcMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_ParkusaDefinedContributionPlanMember" name="ParkusaDefinedContributionPlanMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" name="PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_PerformanceAwardsIssuedMultiplier" name="PerformanceAwardsIssuedMultiplier" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_PerformanceShareAwardTargetLevelPercentage" name="PerformanceShareAwardTargetLevelPercentage" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" name="PortlandHarborNaturalreSourcesTrusteeCouncilMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_PortlandHarborSuperfundSiteMember" name="PortlandHarborSuperfundSiteMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" name="PrecastInfrastructureAndEngineeredSystemsMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_PropertyAndEquipmentMember" name="PropertyAndEquipmentMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" name="PropertyPlantAndEquipmentNetExcludingConstructionInProgress" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="nwpx_ReclassifiedToInterestExpenseMember" name="ReclassifiedToInterestExpenseMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_ReclassifiedToNetSalesMember" name="ReclassifiedToNetSalesMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" name="RestrictedStockUnitsAndPerformanceStockAwardsMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_RetirementPlanExpense" name="RetirementPlanExpense" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_Rule10b51TradingPlanDesignatedAmount" name="Rule10b51TradingPlanDesignatedAmount" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" name="ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" name="ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" name="ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_SecuredOvernightFinancingRateSOFRMember" name="SecuredOvernightFinancingRateSOFRMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" nillable="true" substitutionGroup="xbrli:item" type="xbrli:sharesItemType" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="nwpx_ShareRepurchaseProgramMember" name="ShareRepurchaseProgramMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_StockAwardsMember" name="StockAwardsMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock" name="SummaryOfValuationAndQualifyingAccountsTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_TaxCreditCarryforwardExpirationYear" name="TaxCreditCarryforwardExpirationYear" nillable="true" substitutionGroup="xbrli:item" type="xbrli:gYearItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_The1941InterestRateSwapMember" name="The1941InterestRateSwapMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_The296InterestRateSwapMember" name="The296InterestRateSwapMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_WellsFargoBankNAMember" name="WellsFargoBankNAMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="nwpx_WorkersCompensationInsurancePolicyTextBlock" name="WorkersCompensationInsurancePolicyTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" name="statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-10-fair-value-measurements-tables" name="statement-statement-note-10-fair-value-measurements-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" name="statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-tables" name="statement-statement-note-11-derivative-instruments-and-hedging-activities-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" name="statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" name="statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-14-sharebased-compensation-tables" name="statement-statement-note-14-sharebased-compensation-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" name="statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-16-revenue-disaggregation-of-revenue-details" name="statement-statement-note-16-revenue-disaggregation-of-revenue-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" name="statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-16-revenue-tables" name="statement-statement-note-16-revenue-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" name="statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details" name="statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" name="statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" name="statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" name="statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-17-income-taxes-tables" name="statement-statement-note-17-income-taxes-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" name="statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" name="statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" name="statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" name="statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-tables" name="statement-statement-note-18-accumulated-other-comprehensive-loss-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" name="statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-19-segment-information-tables" name="statement-statement-note-19-segment-information-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-2-business-combinations-intangible-assets-acquired-details" name="statement-statement-note-2-business-combinations-intangible-assets-acquired-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" name="statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-tables" name="statement-statement-note-2-summary-of-significant-accounting-policies-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" name="statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-3-business-combinations-pro-forma-summary-details" name="statement-statement-note-3-business-combinations-pro-forma-summary-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-3-business-combinations-tables" name="statement-statement-note-3-business-combinations-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-4-inventories-components-of-inventories-details" name="statement-statement-note-4-inventories-components-of-inventories-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-4-inventories-tables" name="statement-statement-note-4-inventories-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details" name="statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-5-property-and-equipment-tables" name="statement-statement-note-5-property-and-equipment-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" name="statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" name="statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-tables" name="statement-statement-note-6-goodwill-and-intangible-assets-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details" name="statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-9-leases-lease-cost-details" name="statement-statement-note-9-leases-lease-cost-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" name="statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" name="statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" name="statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-note-9-leases-tables" name="statement-statement-note-9-leases-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables" name="statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" name="statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="nwpx_statement-statement-significant-accounting-policies-policies" name="statement-statement-significant-accounting-policies-policies" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
</xsd:schema>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.CAL
<SEQUENCE>10
<FILENAME>nwpx-20231231_cal.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION CALCULATION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 02:45PM UTC 2024-03-05--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" 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.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:type="extended">
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:type="arc"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-cash-flows" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows" xlink:type="extended">
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:label="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_GainOnInsuranceProceeds" xlink:label="nwpx_GainOnInsuranceProceeds" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" xlink:label="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:label="us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsForProceedsFromOtherInvestingActivities" xlink:label="us-gaap_PaymentsForProceedsFromOtherInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquireIntangibleAssets" xlink:label="us-gaap_PaymentsToAcquireIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:label="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromLinesOfCredit" xlink:label="us-gaap_ProceedsFromLinesOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:label="us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RepaymentsOfLinesOfCredit" xlink:label="us-gaap_RepaymentsOfLinesOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_AmortizationOfIntangibleAssets" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc"/>
    <link:calculationArc order="5" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="arc"/>
    <link:calculationArc order="6" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInInventories" xlink:type="arc"/>
    <link:calculationArc order="7" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:type="arc"/>
    <link:calculationArc order="8" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:type="arc"/>
    <link:calculationArc order="9" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_OtherNoncashIncomeExpense" xlink:type="arc"/>
    <link:calculationArc order="10" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_ShareBasedCompensation" xlink:type="arc"/>
    <link:calculationArc order="11" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="nwpx_GainOnInsuranceProceeds" xlink:type="arc"/>
    <link:calculationArc order="12" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquireIntangibleAssets" xlink:type="arc"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" xlink:type="arc"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:calculationArc order="5" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsForProceedsFromOtherInvestingActivities" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:type="arc"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_RepaymentsOfLinesOfCredit" xlink:type="arc"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_ProceedsFromLinesOfCredit" xlink:type="arc"/>
    <link:calculationArc order="6" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_FinanceLeasePrincipalPayments" xlink:type="arc"/>
    <link:calculationArc order="7" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_RepaymentsOfLongTermDebt" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets" xlink:href="nwpx-20231231.xsd#statement-consolidated-balance-sheets" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccruedLiabilitiesCurrent" xlink:label="us-gaap_AccruedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetNetCurrent" xlink:label="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiabilityCurrent" xlink:label="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermDebtCurrent" xlink:label="us-gaap_LongTermDebtCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermLineOfCredit" xlink:label="us-gaap_LongTermLineOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReceivablesNetCurrent" xlink:label="us-gaap_ReceivablesNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_ReceivablesNetCurrent" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_AssetsCurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccruedLiabilitiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccountsPayableCurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_LongTermDebtCurrent" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_LongTermLineOfCredit" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_LiabilitiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_PreferredStockValue" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_Liabilities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-operations" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestExpense" xlink:label="us-gaap_InterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SellingGeneralAndAdministrativeExpense" xlink:label="us-gaap_SellingGeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_GrossProfit" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_SellingGeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_InterestExpense" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-comprehensive-income" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:to="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:href="nwpx-20231231.xsd#statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:label="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details" xlink:href="nwpx-20231231.xsd#statement-note-4-inventories-components-of-inventories-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:label="us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryRawMaterialsNetOfReserves" xlink:label="us-gaap_InventoryRawMaterialsNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventorySuppliesNetOfReserves" xlink:label="us-gaap_InventorySuppliesNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryWorkInProcessNetOfReserves" xlink:label="us-gaap_InventoryWorkInProcessNetOfReserves" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventorySuppliesNetOfReserves" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryWorkInProcessNetOfReserves" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryRawMaterialsNetOfReserves" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:href="nwpx-20231231.xsd#statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:type="extended">
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:label="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:to="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:type="extended">
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseLiability" xlink:label="nwpx_LeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseRightOfUseAsset" xlink:label="nwpx_LeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="nwpx_LeaseRightOfUseAsset" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="nwpx_LeaseRightOfUseAsset" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="nwpx_LeaseLiability" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="nwpx_LeaseLiability" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-lease-cost-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShortTermLeaseCost" xlink:label="us-gaap_ShortTermLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_VariableLeaseCost" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_ShortTermLeaseCost" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_OperatingLeaseCost" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_FinanceLeaseInterestExpense" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:type="extended">
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:label="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:type="extended">
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:label="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:label="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:label="us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationOtherAdjustments" xlink:label="us-gaap_IncomeTaxReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxReconciliationOtherAdjustments" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:type="arc"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredTaxAssetContractAssetsNet" xlink:label="nwpx_DeferredTaxAssetContractAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredTaxAssetTradeReceivableNet" xlink:label="nwpx_DeferredTaxAssetTradeReceivableNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsGross" xlink:label="us-gaap_DeferredTaxAssetsGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesPrepaidExpenses" xlink:label="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsGross" xlink:to="us-gaap_DeferredTaxAssetsOther" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsGross" xlink:to="nwpx_DeferredTaxAssetContractAssetsNet" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsGross" xlink:to="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsGross" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsGross" xlink:to="nwpx_DeferredTaxAssetTradeReceivableNet" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsGross" xlink:to="us-gaap_DeferredTaxAssetsInventory" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsGross" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsGross" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxLiabilities" xlink:to="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxLiabilities" xlink:to="us-gaap_DeferredTaxAssetsNet" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:label="us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:type="arc"/>
  </link:calculationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.DEF
<SEQUENCE>11
<FILENAME>nwpx-20231231_def.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION DEFINITION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 02:45PM UTC 2024-03-05--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" 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:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/all" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#all" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/domain-member" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#domain-member" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-domain" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#hypercube-dimension" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-default" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts" xlink:href="nwpx-20231231.xsd#statement-schedule-ii-valuation-and-qualifying-accounts" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:label="srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information" xlink:href="nwpx-20231231.xsd#statement-note-19-segment-information" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:label="us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements" xlink:href="nwpx-20231231.xsd#statement-note-10-fair-value-measurements" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_FairValueDisclosuresTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-4-inventories" xlink:href="nwpx-20231231.xsd#statement-note-4-inventories" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-4-inventories" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InventoryDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-document-and-entity-information" xlink:href="nwpx-20231231.xsd#statement-document-and-entity-information" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-document-and-entity-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditorFirmId" xlink:label="dei_AuditorFirmId" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditorLocation" xlink:label="dei_AuditorLocation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditorName" xlink:label="dei_AuditorName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentAnnualReport" xlink:label="dei_DocumentAnnualReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFinStmtErrorCorrectionFlag" xlink:label="dei_DocumentFinStmtErrorCorrectionFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityPublicFloat" xlink:label="dei_EntityPublicFloat" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityVoluntaryFilers" xlink:label="dei_EntityVoluntaryFilers" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="dei_EntityWellKnownSeasonedIssuer" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_IcfrAuditorAttestationFlag" xlink:label="dei_IcfrAuditorAttestationFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="dei_DocumentInformationTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentInformationTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCentralIndexKey" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityRegistrantName" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AmendmentFlag" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CurrentFiscalYearEndDate" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalPeriodFocus" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalYearFocus" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentType" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentAnnualReport" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentPeriodEndDate" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentTransitionReport" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFileNumber" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityIncorporationStateCountryCode" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityTaxIdentificationNumber" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressAddressLine1" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressCityOrTown" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressStateOrProvince" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressPostalZipCode" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CityAreaCode" xlink:type="arc"/>
    <link:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_LocalPhoneNumber" xlink:type="arc"/>
    <link:definitionArc order="20" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_Security12bTitle" xlink:type="arc"/>
    <link:definitionArc order="21" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_TradingSymbol" xlink:type="arc"/>
    <link:definitionArc order="22" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_SecurityExchangeName" xlink:type="arc"/>
    <link:definitionArc order="23" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityWellKnownSeasonedIssuer" xlink:type="arc"/>
    <link:definitionArc order="24" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityVoluntaryFilers" xlink:type="arc"/>
    <link:definitionArc order="25" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCurrentReportingStatus" xlink:type="arc"/>
    <link:definitionArc order="26" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityInteractiveDataCurrent" xlink:type="arc"/>
    <link:definitionArc order="27" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFilerCategory" xlink:type="arc"/>
    <link:definitionArc order="28" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntitySmallBusiness" xlink:type="arc"/>
    <link:definitionArc order="29" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityEmergingGrowthCompany" xlink:type="arc"/>
    <link:definitionArc order="30" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_IcfrAuditorAttestationFlag" xlink:type="arc"/>
    <link:definitionArc order="31" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFinStmtErrorCorrectionFlag" xlink:type="arc"/>
    <link:definitionArc order="32" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityShellCompany" xlink:type="arc"/>
    <link:definitionArc order="33" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityPublicFloat" xlink:type="arc"/>
    <link:definitionArc order="34" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCommonStockSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="35" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AuditorFirmId" xlink:type="arc"/>
    <link:definitionArc order="36" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AuditorName" xlink:type="arc"/>
    <link:definitionArc order="37" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AuditorLocation" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals" xlink:href="nwpx-20231231.xsd#statement-consolidated-balance-sheets-parentheticals" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockSharesOutstanding" xlink:label="us-gaap_PreferredStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesAuthorized" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesIssued" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesAuthorized" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesIssued" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-stockholders-equity-parentheticals" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-cash-flows-parentheticals" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromIncomeTaxRefunds" xlink:label="us-gaap_ProceedsFromIncomeTaxRefunds" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ProceedsFromIncomeTaxRefunds" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-1-organization" xlink:href="nwpx-20231231.xsd#statement-note-1-organization" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-1-organization" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies" xlink:href="nwpx-20231231.xsd#statement-note-2-summary-of-significant-accounting-policies" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilityMember" xlink:label="nwpx_AccruedLiabilityMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherLongtermLiabilitiesMember" xlink:label="nwpx_OtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LandImprovementsMember" xlink:label="us-gaap_LandImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseholdImprovementsMember" xlink:label="us-gaap_LeaseholdImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_MachineryAndEquipmentMember" xlink:label="us-gaap_MachineryAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_LandImprovementsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_LeaseholdImprovementsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_MachineryAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="nwpx_AccruedLiabilityMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="nwpx_OtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationDisclosureTextBlock" xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment" xlink:href="nwpx-20231231.xsd#statement-note-5-property-and-equipment" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_MX" xlink:label="country_MX" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_MX" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-7-current-debt" xlink:href="nwpx-20231231.xsd#statement-note-7-current-debt" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-7-current-debt" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_InterimFundingAgreementifaMember" xlink:label="nwpx_InterimFundingAgreementifaMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentAxis" xlink:label="us-gaap_DebtInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermDebtTextBlock" xlink:label="us-gaap_LongTermDebtTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DebtInstrumentAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="nwpx_InterimFundingAgreementifaMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_LongTermDebtTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement" xlink:href="nwpx-20231231.xsd#statement-note-8-credit-agreement" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_WellsFargoBankNAMember" xlink:label="nwpx_WellsFargoBankNAMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityAxis" xlink:label="us-gaap_CreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityAxis" xlink:label="us-gaap_LineOfCreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityLenderDomain" xlink:label="us-gaap_LineOfCreditFacilityLenderDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityLenderDomain" xlink:label="us-gaap_LineOfCreditFacilityLenderDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevolvingCreditFacilityMember" xlink:label="us-gaap_RevolvingCreditFacilityMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_LineOfCreditFacilityAxis" xlink:to="us-gaap_LineOfCreditFacilityLenderDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LineOfCreditFacilityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LineOfCreditFacilityLenderDomain" xlink:to="nwpx_WellsFargoBankNAMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LineOfCreditFacilityAxis" xlink:to="us-gaap_LineOfCreditFacilityLenderDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CreditFacilityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CreditFacilityDomain" xlink:to="us-gaap_RevolvingCreditFacilityMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DebtDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases" xlink:href="nwpx-20231231.xsd#statement-note-9-leases" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LesseeLeaseDisclosureTextBlock" xlink:label="nwpx_LesseeLeaseDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="nwpx_LesseeLeaseDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities" xlink:href="nwpx-20231231.xsd#statement-note-11-derivative-instruments-and-hedging-activities" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ForeignExchangeForward1Member" xlink:label="nwpx_ForeignExchangeForward1Member" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ReclassifiedToInterestExpenseMember" xlink:label="nwpx_ReclassifiedToInterestExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ReclassifiedToNetSalesMember" xlink:label="nwpx_ReclassifiedToNetSalesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_The1941InterestRateSwapMember" xlink:label="nwpx_The1941InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_The296InterestRateSwapMember" xlink:label="nwpx_The296InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowHedgingMember" xlink:label="us-gaap_CashFlowHedgingMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:label="us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:label="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DesignatedAsHedgingInstrumentMember" xlink:label="us-gaap_DesignatedAsHedgingInstrumentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationAxis" xlink:label="us-gaap_HedgingDesignationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationDomain" xlink:label="us-gaap_HedgingDesignationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationDomain" xlink:label="us-gaap_HedgingDesignationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingRelationshipDomain" xlink:label="us-gaap_HedgingRelationshipDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingRelationshipDomain" xlink:label="us-gaap_HedgingRelationshipDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NondesignatedMember" xlink:label="us-gaap_NondesignatedMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeAxis" xlink:label="us-gaap_ReclassificationTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeDomain" xlink:label="us-gaap_ReclassificationTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeDomain" xlink:label="us-gaap_ReclassificationTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:to="us-gaap_HedgingRelationshipDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_HedgingDesignationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="us-gaap_ReclassificationTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_HedgingDesignationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_HedgingDesignationDomain" xlink:to="us-gaap_DesignatedAsHedgingInstrumentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_HedgingDesignationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="nwpx_ForeignExchangeForward1Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_HedgingDesignationDomain" xlink:to="us-gaap_NondesignatedMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="nwpx_The1941InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_HedgingRelationshipDomain" xlink:to="us-gaap_CashFlowHedgingMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:to="us-gaap_HedgingRelationshipDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="nwpx_The296InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ReclassificationTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ReclassificationTypeDomain" xlink:to="nwpx_ReclassifiedToNetSalesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="us-gaap_ReclassificationTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ReclassificationTypeDomain" xlink:to="nwpx_ReclassifiedToInterestExpenseMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity" xlink:href="nwpx-20231231.xsd#statement-note-12-stockholders-equity" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AtthemarketOfferingMember" xlink:label="nwpx_AtthemarketOfferingMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ShareRepurchaseProgramMember" xlink:label="nwpx_ShareRepurchaseProgramMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SaleOfStockNameOfTransactionDomain" xlink:label="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SaleOfStockNameOfTransactionDomain" xlink:label="us-gaap_SaleOfStockNameOfTransactionDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramAxis" xlink:label="us-gaap_ShareRepurchaseProgramAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramDomain" xlink:label="us-gaap_ShareRepurchaseProgramDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramDomain" xlink:label="us-gaap_ShareRepurchaseProgramDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:label="us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SubsidiarySaleOfStockAxis" xlink:label="us-gaap_SubsidiarySaleOfStockAxis" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ShareRepurchaseProgramAxis" xlink:to="us-gaap_ShareRepurchaseProgramDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_SubsidiarySaleOfStockAxis" xlink:to="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_SubsidiarySaleOfStockAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:to="nwpx_AtthemarketOfferingMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_SubsidiarySaleOfStockAxis" xlink:to="us-gaap_SaleOfStockNameOfTransactionDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ShareRepurchaseProgramAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareRepurchaseProgramDomain" xlink:to="nwpx_ShareRepurchaseProgramMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ShareRepurchaseProgramAxis" xlink:to="us-gaap_ShareRepurchaseProgramDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans" xlink:href="nwpx-20231231.xsd#statement-note-13-retirement-plans" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DefinedContributionPlanMember" xlink:label="nwpx_DefinedContributionPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:label="nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherLongtermLiabilitiesMember" xlink:label="nwpx_OtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkusaDefinedContributionPlanMember" xlink:label="nwpx_ParkusaDefinedContributionPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="nwpx_DefinedContributionPlanMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="nwpx_ParkusaDefinedContributionPlanMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="nwpx_OtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation" xlink:href="nwpx-20231231.xsd#statement-note-14-sharebased-compensation" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:label="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_StockAwardsMember" xlink:label="nwpx_StockAwardsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_DirectorMember" xlink:label="srt_DirectorMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualAxis" xlink:label="srt_TitleOfIndividualAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="nwpx_StockAwardsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_TitleOfIndividualAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:to="srt_DirectorMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies" xlink:href="nwpx-20231231.xsd#statement-note-15-commitments-and-contingencies" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LowerWillametteGroupMember" xlink:label="nwpx_LowerWillametteGroupMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:label="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PortlandHarborSuperfundSiteMember" xlink:label="nwpx_PortlandHarborSuperfundSiteMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_CounterpartyNameAxis" xlink:label="srt_CounterpartyNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RepurchaseAgreementCounterpartyNameDomain" xlink:label="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RepurchaseAgreementCounterpartyNameDomain" xlink:label="srt_RepurchaseAgreementCounterpartyNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CapitalAdditionsMember" xlink:label="us-gaap_CapitalAdditionsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:label="us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteAxis" xlink:label="us-gaap_EnvironmentalRemediationSiteAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteDomain" xlink:label="us-gaap_EnvironmentalRemediationSiteDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteDomain" xlink:label="us-gaap_EnvironmentalRemediationSiteDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:label="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingencyNatureDomain" xlink:label="us-gaap_LossContingencyNatureDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingencyNatureDomain" xlink:label="us-gaap_LossContingencyNatureDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsAxis" xlink:label="us-gaap_OtherCommitmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsDomain" xlink:label="us-gaap_OtherCommitmentsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsDomain" xlink:label="us-gaap_OtherCommitmentsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_CounterpartyNameAxis" xlink:to="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_OtherCommitmentsAxis" xlink:to="us-gaap_OtherCommitmentsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:to="us-gaap_LossContingencyNatureDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_EnvironmentalRemediationSiteAxis" xlink:to="us-gaap_EnvironmentalRemediationSiteDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_CounterpartyNameAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:to="nwpx_LowerWillametteGroupMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_CounterpartyNameAxis" xlink:to="srt_RepurchaseAgreementCounterpartyNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_EnvironmentalRemediationSiteAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EnvironmentalRemediationSiteDomain" xlink:to="nwpx_PortlandHarborSuperfundSiteMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_EnvironmentalRemediationSiteAxis" xlink:to="us-gaap_EnvironmentalRemediationSiteDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LossContingencyNatureDomain" xlink:to="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:to="us-gaap_LossContingencyNatureDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_OtherCommitmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherCommitmentsDomain" xlink:to="us-gaap_CapitalAdditionsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_OtherCommitmentsAxis" xlink:to="us-gaap_OtherCommitmentsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OneSppCustomerMember" xlink:label="nwpx_OneSppCustomerMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:label="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MajorCustomersAxis" xlink:label="srt_MajorCustomersAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_NameOfMajorCustomerDomain" xlink:label="srt_NameOfMajorCustomerDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_NameOfMajorCustomerDomain" xlink:label="srt_NameOfMajorCustomerDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskByTypeAxis" xlink:label="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CustomerConcentrationRiskMember" xlink:label="us-gaap_CustomerConcentrationRiskMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesRevenueNetMember" xlink:label="us-gaap_SalesRevenueNetMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_MajorCustomersAxis" xlink:to="srt_NameOfMajorCustomerDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:to="us-gaap_SalesRevenueNetMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ConcentrationRiskTypeDomain" xlink:to="us-gaap_CustomerConcentrationRiskMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_MajorCustomersAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_NameOfMajorCustomerDomain" xlink:to="nwpx_OneSppCustomerMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_MajorCustomersAxis" xlink:to="srt_NameOfMajorCustomerDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DomesticCountryMember" xlink:label="us-gaap_DomesticCountryMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCountryMember" xlink:label="us-gaap_ForeignCountryMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityAxis" xlink:label="us-gaap_IncomeTaxAuthorityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityDomain" xlink:label="us-gaap_IncomeTaxAuthorityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityDomain" xlink:label="us-gaap_IncomeTaxAuthorityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StateAndLocalJurisdictionMember" xlink:label="us-gaap_StateAndLocalJurisdictionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_IncomeTaxAuthorityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeTaxAuthorityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeTaxAuthorityDomain" xlink:to="us-gaap_DomesticCountryMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_IncomeTaxAuthorityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeTaxAuthorityDomain" xlink:to="us-gaap_StateAndLocalJurisdictionMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeTaxAuthorityDomain" xlink:to="us-gaap_ForeignCountryMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies" xlink:href="nwpx-20231231.xsd#statement-significant-accounting-policies-policies" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilitiesPolicyTextBlock" xlink:label="nwpx_AccruedLiabilitiesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" xlink:label="nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_WorkersCompensationInsurancePolicyTextBlock" xlink:label="nwpx_WorkersCompensationInsurancePolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationsPolicy" xlink:label="us-gaap_BusinessCombinationsPolicy" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskCreditRisk" xlink:label="us-gaap_ConcentrationRiskCreditRisk" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConsolidationPolicyTextBlock" xlink:label="us-gaap_ConsolidationPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativesPolicyTextBlock" xlink:label="us-gaap_DerivativesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerSharePolicyTextBlock" xlink:label="us-gaap_EarningsPerSharePolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxPolicyTextBlock" xlink:label="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryPolicyTextBlock" xlink:label="us-gaap_InventoryPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeLeasesPolicyTextBlock" xlink:label="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionAndOtherPostretirementPlansPolicy" xlink:label="us-gaap_PensionAndOtherPostretirementPlansPolicy" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReceivablesPolicyTextBlock" xlink:label="us-gaap_ReceivablesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRecognitionPolicyTextBlock" xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:label="us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquityPolicyTextBlock" xlink:label="us-gaap_StockholdersEquityPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UseOfEstimates" xlink:label="us-gaap_UseOfEstimates" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PolicyTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PolicyTextBlockAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ConsolidationPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_UseOfEstimates" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_BusinessCombinationsPolicy" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ReceivablesPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_InventoryPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="nwpx_WorkersCompensationInsurancePolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="nwpx_AccruedLiabilitiesPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_DerivativesPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_StockholdersEquityPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_PensionAndOtherPostretirementPlansPolicy" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:type="arc"/>
    <link:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="20" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="21" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_EarningsPerSharePolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="22" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ConcentrationRiskCreditRisk" xlink:type="arc"/>
    <link:definitionArc order="23" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables" xlink:href="nwpx-20231231.xsd#statement-note-2-summary-of-significant-accounting-policies-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:label="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock" xlink:label="us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock" xlink:label="us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables" xlink:href="nwpx-20231231.xsd#statement-note-4-inventories-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" xlink:label="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables" xlink:href="nwpx-20231231.xsd#statement-note-5-property-and-equipment-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" xlink:label="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock" xlink:label="nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LesseeLiabilityMaturityTableTextBlock" xlink:label="nwpx_LesseeLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" xlink:label="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseCostTableTextBlock" xlink:label="us-gaap_LeaseCostTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_LeaseCostTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_LesseeLiabilityMaturityTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables" xlink:href="nwpx-20231231.xsd#statement-note-10-fair-value-measurements-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:label="us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:href="nwpx-20231231.xsd#statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:label="us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables" xlink:href="nwpx-20231231.xsd#statement-note-14-sharebased-compensation-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" xlink:label="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:label="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:label="us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:label="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables" xlink:href="nwpx-20231231.xsd#statement-note-19-segment-information-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock" xlink:label="us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:href="nwpx-20231231.xsd#statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock" xlink:label="nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-1-organization-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfManufacturingFacilities" xlink:label="nwpx_NumberOfManufacturingFacilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NumberOfOperatingSegments" xlink:label="us-gaap_NumberOfOperatingSegments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NumberOfOperatingSegments" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfManufacturingFacilities" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilityMember" xlink:label="nwpx_AccruedLiabilityMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BookOverdrafts" xlink:label="nwpx_BookOverdrafts" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" xlink:label="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherLongtermLiabilitiesMember" xlink:label="nwpx_OtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccruedBonusesCurrent" xlink:label="us-gaap_AccruedBonusesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:label="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCurrencyTransactionGainLossRealized" xlink:label="us-gaap_ForeignCurrencyTransactionGainLossRealized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LandImprovementsMember" xlink:label="us-gaap_LandImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseholdImprovementsMember" xlink:label="us-gaap_LeaseholdImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_MachineryAndEquipmentMember" xlink:label="us-gaap_MachineryAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesAndExciseTaxPayableCurrent" xlink:label="us-gaap_SalesAndExciseTaxPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WorkersCompensationLiabilityCurrent" xlink:label="us-gaap_WorkersCompensationLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent" xlink:label="us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WorkersCompensationLiabilityNoncurrent" xlink:label="us-gaap_WorkersCompensationLiabilityNoncurrent" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_LandImprovementsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_LeaseholdImprovementsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_MachineryAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="nwpx_AccruedLiabilityMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="nwpx_OtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_BookOverdrafts" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WorkersCompensationLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WorkersCompensationLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccruedBonusesCurrent" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SalesAndExciseTaxPayableCurrent" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ForeignCurrencyTransactionGainLossRealized" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired" xlink:label="us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:label="us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred" xlink:label="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:label="us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-5-property-and-equipment-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_MX" xlink:label="country_MX" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_MX" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-7-current-debt-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DebtInstrumentCovenantMinimumEbitda" xlink:label="nwpx_DebtInstrumentCovenantMinimumEbitda" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_InterimFundingAgreementifaMember" xlink:label="nwpx_InterimFundingAgreementifaMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_MaximumSeniorLeverageRatio" xlink:label="nwpx_MaximumSeniorLeverageRatio" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentAxis" xlink:label="us-gaap_DebtInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentFaceAmount" xlink:label="us-gaap_DebtInstrumentFaceAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtWeightedAverageInterestRate" xlink:label="us-gaap_DebtWeightedAverageInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShortTermBorrowings" xlink:label="us-gaap_ShortTermBorrowings" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DebtInstrumentAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="nwpx_InterimFundingAgreementifaMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentFaceAmount" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShortTermBorrowings" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtWeightedAverageInterestRate" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_MaximumSeniorLeverageRatio" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_DebtInstrumentCovenantMinimumEbitda" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-8-credit-agreement-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization" xlink:label="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" xlink:label="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_MaximumSeniorLeverageRatioRequirement" xlink:label="nwpx_MaximumSeniorLeverageRatioRequirement" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_WellsFargoBankNAMember" xlink:label="nwpx_WellsFargoBankNAMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityAxis" xlink:label="us-gaap_CreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtWeightedAverageInterestRate" xlink:label="us-gaap_DebtWeightedAverageInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestCostsCapitalized" xlink:label="us-gaap_InterestCostsCapitalized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LettersOfCreditOutstandingAmount" xlink:label="us-gaap_LettersOfCreditOutstandingAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCredit" xlink:label="us-gaap_LineOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityAxis" xlink:label="us-gaap_LineOfCreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet" xlink:label="us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityLenderDomain" xlink:label="us-gaap_LineOfCreditFacilityLenderDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityLenderDomain" xlink:label="us-gaap_LineOfCreditFacilityLenderDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:label="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevolvingCreditFacilityMember" xlink:label="us-gaap_RevolvingCreditFacilityMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_LineOfCreditFacilityAxis" xlink:to="us-gaap_LineOfCreditFacilityLenderDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LineOfCreditFacilityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LineOfCreditFacilityLenderDomain" xlink:to="nwpx_WellsFargoBankNAMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LineOfCreditFacilityAxis" xlink:to="us-gaap_LineOfCreditFacilityLenderDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CreditFacilityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CreditFacilityDomain" xlink:to="us-gaap_RevolvingCreditFacilityMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_MaximumSeniorLeverageRatioRequirement" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InterestCostsCapitalized" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCredit" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LettersOfCreditOutstandingAmount" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtWeightedAverageInterestRate" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-11-derivative-instruments-and-hedging-activities-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ForeignExchangeForward1Member" xlink:label="nwpx_ForeignExchangeForward1Member" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ReclassifiedToInterestExpenseMember" xlink:label="nwpx_ReclassifiedToInterestExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ReclassifiedToNetSalesMember" xlink:label="nwpx_ReclassifiedToNetSalesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_The1941InterestRateSwapMember" xlink:label="nwpx_The1941InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_The296InterestRateSwapMember" xlink:label="nwpx_The296InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths" xlink:label="us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowHedgingMember" xlink:label="us-gaap_CashFlowHedgingMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeFixedInterestRate" xlink:label="us-gaap_DerivativeFixedInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:label="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeNotionalAmount" xlink:label="us-gaap_DerivativeNotionalAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DesignatedAsHedgingInstrumentMember" xlink:label="us-gaap_DesignatedAsHedgingInstrumentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationAxis" xlink:label="us-gaap_HedgingDesignationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationDomain" xlink:label="us-gaap_HedgingDesignationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationDomain" xlink:label="us-gaap_HedgingDesignationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingRelationshipDomain" xlink:label="us-gaap_HedgingRelationshipDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingRelationshipDomain" xlink:label="us-gaap_HedgingRelationshipDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NondesignatedMember" xlink:label="us-gaap_NondesignatedMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeAxis" xlink:label="us-gaap_ReclassificationTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeDomain" xlink:label="us-gaap_ReclassificationTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeDomain" xlink:label="us-gaap_ReclassificationTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:to="us-gaap_HedgingRelationshipDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_HedgingDesignationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="us-gaap_ReclassificationTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_HedgingDesignationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_HedgingDesignationDomain" xlink:to="us-gaap_DesignatedAsHedgingInstrumentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_HedgingDesignationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="nwpx_ForeignExchangeForward1Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_HedgingDesignationDomain" xlink:to="us-gaap_NondesignatedMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="nwpx_The1941InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_HedgingRelationshipDomain" xlink:to="us-gaap_CashFlowHedgingMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:to="us-gaap_HedgingRelationshipDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="nwpx_The296InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ReclassificationTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ReclassificationTypeDomain" xlink:to="nwpx_ReclassifiedToNetSalesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="us-gaap_ReclassificationTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ReclassificationTypeDomain" xlink:to="nwpx_ReclassifiedToInterestExpenseMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DerivativeNotionalAmount" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DerivativeFixedInterestRate" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-12-stockholders-equity-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AtthemarketOfferingMember" xlink:label="nwpx_AtthemarketOfferingMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EquityOfferingMaximumOfferingAmount" xlink:label="nwpx_EquityOfferingMaximumOfferingAmount" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_Rule10b51TradingPlanDesignatedAmount" xlink:label="nwpx_Rule10b51TradingPlanDesignatedAmount" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ShareRepurchaseProgramMember" xlink:label="nwpx_ShareRepurchaseProgramMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SaleOfStockNameOfTransactionDomain" xlink:label="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SaleOfStockNameOfTransactionDomain" xlink:label="us-gaap_SaleOfStockNameOfTransactionDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramAxis" xlink:label="us-gaap_ShareRepurchaseProgramAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramDomain" xlink:label="us-gaap_ShareRepurchaseProgramDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramDomain" xlink:label="us-gaap_ShareRepurchaseProgramDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:label="us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:label="us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SubsidiarySaleOfStockAxis" xlink:label="us-gaap_SubsidiarySaleOfStockAxis" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ShareRepurchaseProgramAxis" xlink:to="us-gaap_ShareRepurchaseProgramDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_SubsidiarySaleOfStockAxis" xlink:to="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_SubsidiarySaleOfStockAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:to="nwpx_AtthemarketOfferingMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_SubsidiarySaleOfStockAxis" xlink:to="us-gaap_SaleOfStockNameOfTransactionDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ShareRepurchaseProgramAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareRepurchaseProgramDomain" xlink:to="nwpx_ShareRepurchaseProgramMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ShareRepurchaseProgramAxis" xlink:to="us-gaap_ShareRepurchaseProgramDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EquityOfferingMaximumOfferingAmount" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_Rule10b51TradingPlanDesignatedAmount" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-13-retirement-plans-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" xlink:label="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DefinedContributionPlanMember" xlink:label="nwpx_DefinedContributionPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent" xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent" xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:label="nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfNoncontributoryDefinedBenefitPlans" xlink:label="nwpx_NumberOfNoncontributoryDefinedBenefitPlans" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherLongtermLiabilitiesMember" xlink:label="nwpx_OtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkusaDefinedContributionPlanMember" xlink:label="nwpx_ParkusaDefinedContributionPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_RetirementPlanExpense" xlink:label="nwpx_RetirementPlanExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:label="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation" xlink:label="us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent" xlink:label="us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate" xlink:label="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets" xlink:label="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanFairValueOfPlanAssets" xlink:label="us-gaap_DefinedBenefitPlanFairValueOfPlanAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost" xlink:label="us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="nwpx_DefinedContributionPlanMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="nwpx_ParkusaDefinedContributionPlanMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="nwpx_OtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfNoncontributoryDefinedBenefitPlans" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanFairValueOfPlanAssets" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_RetirementPlanExpense" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-14-sharebased-compensation-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed" xlink:label="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfActiveStockIncentivePlans" xlink:label="nwpx_NumberOfActiveStockIncentivePlans" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfInactiveStockIncentivePlans" xlink:label="nwpx_NumberOfInactiveStockIncentivePlans" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PerformanceAwardsIssuedMultiplier" xlink:label="nwpx_PerformanceAwardsIssuedMultiplier" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PerformanceShareAwardTargetLevelPercentage" xlink:label="nwpx_PerformanceShareAwardTargetLevelPercentage" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:label="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" xlink:label="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_StockAwardsMember" xlink:label="nwpx_StockAwardsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_DirectorMember" xlink:label="srt_DirectorMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualAxis" xlink:label="srt_TitleOfIndividualAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:label="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="nwpx_StockAwardsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_TitleOfIndividualAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:to="srt_DirectorMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfActiveStockIncentivePlans" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfInactiveStockIncentivePlans" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_PerformanceShareAwardTargetLevelPercentage" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_PerformanceAwardsIssuedMultiplier" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-15-commitments-and-contingencies-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EstimatedCostOfEPASelectedRemedy" xlink:label="nwpx_EstimatedCostOfEPASelectedRemedy" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EstimatedTimeToCompleteSelectedEPARemedy" xlink:label="nwpx_EstimatedTimeToCompleteSelectedEPARemedy" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LowerWillametteGroupMember" xlink:label="nwpx_LowerWillametteGroupMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfPotentiallyResponsibleParties" xlink:label="nwpx_NumberOfPotentiallyResponsibleParties" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived" xlink:label="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:label="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PortlandHarborSuperfundSiteMember" xlink:label="nwpx_PortlandHarborSuperfundSiteMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_CounterpartyNameAxis" xlink:label="srt_CounterpartyNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RepurchaseAgreementCounterpartyNameDomain" xlink:label="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RepurchaseAgreementCounterpartyNameDomain" xlink:label="srt_RepurchaseAgreementCounterpartyNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CapitalAdditionsMember" xlink:label="us-gaap_CapitalAdditionsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteAxis" xlink:label="us-gaap_EnvironmentalRemediationSiteAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteDomain" xlink:label="us-gaap_EnvironmentalRemediationSiteDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteDomain" xlink:label="us-gaap_EnvironmentalRemediationSiteDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LettersOfCreditOutstandingAmount" xlink:label="us-gaap_LettersOfCreditOutstandingAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:label="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingencyAccrualCarryingValueCurrent" xlink:label="us-gaap_LossContingencyAccrualCarryingValueCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingencyNatureDomain" xlink:label="us-gaap_LossContingencyNatureDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingencyNatureDomain" xlink:label="us-gaap_LossContingencyNatureDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitment" xlink:label="us-gaap_OtherCommitment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsAxis" xlink:label="us-gaap_OtherCommitmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsDomain" xlink:label="us-gaap_OtherCommitmentsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsDomain" xlink:label="us-gaap_OtherCommitmentsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_CounterpartyNameAxis" xlink:to="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_OtherCommitmentsAxis" xlink:to="us-gaap_OtherCommitmentsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:to="us-gaap_LossContingencyNatureDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_EnvironmentalRemediationSiteAxis" xlink:to="us-gaap_EnvironmentalRemediationSiteDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_CounterpartyNameAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:to="nwpx_LowerWillametteGroupMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_CounterpartyNameAxis" xlink:to="srt_RepurchaseAgreementCounterpartyNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_EnvironmentalRemediationSiteAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EnvironmentalRemediationSiteDomain" xlink:to="nwpx_PortlandHarborSuperfundSiteMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_EnvironmentalRemediationSiteAxis" xlink:to="us-gaap_EnvironmentalRemediationSiteDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LossContingencyNatureDomain" xlink:to="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:to="us-gaap_LossContingencyNatureDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_OtherCommitmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherCommitmentsDomain" xlink:to="us-gaap_CapitalAdditionsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_OtherCommitmentsAxis" xlink:to="us-gaap_OtherCommitmentsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfPotentiallyResponsibleParties" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EstimatedCostOfEPASelectedRemedy" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EstimatedTimeToCompleteSelectedEPARemedy" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LossContingencyAccrualCarryingValueCurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherCommitment" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LettersOfCreditOutstandingAmount" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-1-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" xlink:label="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfMajorCustomers" xlink:label="nwpx_NumberOfMajorCustomers" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OneSppCustomerMember" xlink:label="nwpx_OneSppCustomerMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:label="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MajorCustomersAxis" xlink:label="srt_MajorCustomersAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_NameOfMajorCustomerDomain" xlink:label="srt_NameOfMajorCustomerDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_NameOfMajorCustomerDomain" xlink:label="srt_NameOfMajorCustomerDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskByTypeAxis" xlink:label="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskPercentage1" xlink:label="us-gaap_ConcentrationRiskPercentage1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CustomerConcentrationRiskMember" xlink:label="us-gaap_CustomerConcentrationRiskMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligation" xlink:label="us-gaap_RevenueRemainingPerformanceObligation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesRevenueNetMember" xlink:label="us-gaap_SalesRevenueNetMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_MajorCustomersAxis" xlink:to="srt_NameOfMajorCustomerDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:to="us-gaap_SalesRevenueNetMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ConcentrationRiskTypeDomain" xlink:to="us-gaap_CustomerConcentrationRiskMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_MajorCustomersAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_NameOfMajorCustomerDomain" xlink:to="nwpx_OneSppCustomerMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_MajorCustomersAxis" xlink:to="srt_NameOfMajorCustomerDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ConcentrationRiskPercentage1" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfMajorCustomers" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueRemainingPerformanceObligation" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-2-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:label="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:label="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:label="us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OperatingLossCarryforwardsExpirationYear" xlink:label="nwpx_OperatingLossCarryforwardsExpirationYear" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_TaxCreditCarryforwardExpirationYear" xlink:label="nwpx_TaxCreditCarryforwardExpirationYear" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DomesticCountryMember" xlink:label="us-gaap_DomesticCountryMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCountryMember" xlink:label="us-gaap_ForeignCountryMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityAxis" xlink:label="us-gaap_IncomeTaxAuthorityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityDomain" xlink:label="us-gaap_IncomeTaxAuthorityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityDomain" xlink:label="us-gaap_IncomeTaxAuthorityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OpenTaxYear" xlink:label="us-gaap_OpenTaxYear" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLossCarryforwards" xlink:label="us-gaap_OperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StateAndLocalJurisdictionMember" xlink:label="us-gaap_StateAndLocalJurisdictionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TaxCreditCarryforwardAmount" xlink:label="us-gaap_TaxCreditCarryforwardAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_IncomeTaxAuthorityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeTaxAuthorityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeTaxAuthorityDomain" xlink:to="us-gaap_DomesticCountryMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_IncomeTaxAuthorityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeTaxAuthorityDomain" xlink:to="us-gaap_StateAndLocalJurisdictionMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeTaxAuthorityDomain" xlink:to="us-gaap_ForeignCountryMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TaxCreditCarryforwardAmount" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_TaxCreditCarryforwardExpirationYear" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLossCarryforwards" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_OperatingLossCarryforwardsExpirationYear" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OpenTaxYear" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-cash-flows" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedPaymentsForRepurchaseOfCommonStock" xlink:label="nwpx_AccruedPaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:label="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_GainOnInsuranceProceeds" xlink:label="nwpx_GainOnInsuranceProceeds" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" xlink:label="nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" xlink:label="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CapitalExpendituresIncurredButNotYetPaid" xlink:label="us-gaap_CapitalExpendituresIncurredButNotYetPaid" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:label="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxesPaidNet" xlink:label="us-gaap_IncomeTaxesPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:label="us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsForProceedsFromOtherInvestingActivities" xlink:label="us-gaap_PaymentsForProceedsFromOtherInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquireIntangibleAssets" xlink:label="us-gaap_PaymentsToAcquireIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:label="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromLinesOfCredit" xlink:label="us-gaap_ProceedsFromLinesOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:label="us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RepaymentsOfLinesOfCredit" xlink:label="us-gaap_RepaymentsOfLinesOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AmortizationOfIntangibleAssets" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="nwpx_GainOnInsuranceProceeds" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_OtherNoncashIncomeExpense" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInInventories" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireIntangibleAssets" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsForProceedsFromOtherInvestingActivities" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromLinesOfCredit" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfLinesOfCredit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfLongTermDebt" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_FinanceLeasePrincipalPayments" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_InterestPaidNet" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_IncomeTaxesPaidNet" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="us-gaap_CapitalExpendituresIncurredButNotYetPaid" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="nwpx_AccruedPaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:href="nwpx-20231231.xsd#statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BacklogMember" xlink:label="nwpx_BacklogMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:label="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PatentsMember" xlink:label="us-gaap_PatentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TrademarksAndTradeNamesMember" xlink:label="us-gaap_TrademarksAndTradeNamesMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_TrademarksAndTradeNamesMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_PatentsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="nwpx_BacklogMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations-pro-forma-summary-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:label="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:label="us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:label="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilityMember" xlink:label="nwpx_AccruedLiabilityMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherLiabilitiesMember" xlink:label="us-gaap_OtherLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="nwpx_AccruedLiabilityMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="us-gaap_OtherLiabilitiesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="20" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="21" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="22" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:href="nwpx-20231231.xsd#statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:label="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:label="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:label="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:label="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:href="nwpx-20231231.xsd#statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AllowanceForCreditLossMember" xlink:label="us-gaap_AllowanceForCreditLossMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:label="us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesBalance" xlink:label="us-gaap_ValuationAllowancesAndReservesBalance" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:label="us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesDeductions" xlink:label="us-gaap_ValuationAllowancesAndReservesDeductions" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesDomain" xlink:label="us-gaap_ValuationAllowancesAndReservesDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesDomain" xlink:label="us-gaap_ValuationAllowancesAndReservesDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:label="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:to="us-gaap_ValuationAllowancesAndReservesDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ValuationAllowancesAndReservesDomain" xlink:to="us-gaap_AllowanceForCreditLossMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:to="us-gaap_ValuationAllowancesAndReservesDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ValuationAllowancesAndReservesDomain" xlink:to="us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ValuationAllowancesAndReservesBalance" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ValuationAllowancesAndReservesDeductions" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets" xlink:href="nwpx-20231231.xsd#statement-consolidated-balance-sheets" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccruedLiabilitiesCurrent" xlink:label="us-gaap_AccruedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommitmentsAndContingencies" xlink:label="us-gaap_CommitmentsAndContingencies" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetNetCurrent" xlink:label="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiabilityCurrent" xlink:label="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermDebtCurrent" xlink:label="us-gaap_LongTermDebtCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermLineOfCredit" xlink:label="us-gaap_LongTermLineOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReceivablesNetCurrent" xlink:label="us-gaap_ReceivablesNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsCurrentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_ReceivablesNetCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Assets" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesCurrentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LongTermDebtCurrent" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccountsPayableCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedLiabilitiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LongTermLineOfCredit" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_Liabilities" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_CommitmentsAndContingencies" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquityAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_PreferredStockValue" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-operations" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestExpense" xlink:label="us-gaap_InterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SellingGeneralAndAdministrativeExpense" xlink:label="us-gaap_SellingGeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GrossProfit" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SellingGeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InterestExpense" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-comprehensive-income" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:href="nwpx-20231231.xsd#statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:label="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details" xlink:href="nwpx-20231231.xsd#statement-note-4-inventories-components-of-inventories-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:label="us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryRawMaterialsNetOfReserves" xlink:label="us-gaap_InventoryRawMaterialsNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventorySuppliesNetOfReserves" xlink:label="us-gaap_InventorySuppliesNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryWorkInProcessNetOfReserves" xlink:label="us-gaap_InventoryWorkInProcessNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryRawMaterialsNetOfReserves" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryWorkInProcessNetOfReserves" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventorySuppliesNetOfReserves" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:href="nwpx-20231231.xsd#statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EquipmentUnderFinanceLeaseMember" xlink:label="nwpx_EquipmentUnderFinanceLeaseMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:label="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConstructionInProgressMember" xlink:label="us-gaap_ConstructionInProgressMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LandImprovementsMember" xlink:label="us-gaap_LandImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseholdImprovementsMember" xlink:label="us-gaap_LeaseholdImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_MachineryAndEquipmentMember" xlink:label="us-gaap_MachineryAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_LandImprovementsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_LeaseholdImprovementsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_MachineryAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="nwpx_EquipmentUnderFinanceLeaseMember" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_ConstructionInProgressMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherIntangibleAssetsMember" xlink:label="us-gaap_OtherIntangibleAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PatentsMember" xlink:label="us-gaap_PatentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TrademarksAndTradeNamesMember" xlink:label="us-gaap_TrademarksAndTradeNamesMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_TrademarksAndTradeNamesMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_PatentsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_OtherIntangibleAssetsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:label="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseLiability" xlink:label="nwpx_LeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseRightOfUseAsset" xlink:label="nwpx_LeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PropertyAndEquipmentMember" xlink:label="nwpx_PropertyAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="nwpx_PropertyAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_LeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_LeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-lease-cost-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShortTermLeaseCost" xlink:label="us-gaap_ShortTermLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseInterestExpense" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseCost" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShortTermLeaseCost" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_VariableLeaseCost" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LeaseCost" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeasePayments" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeasePrincipalPayments" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:href="nwpx-20231231.xsd#statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredCompensationPlanMember" xlink:label="nwpx_DeferredCompensationPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredCompensationPlanAssets" xlink:label="us-gaap_DeferredCompensationPlanAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeAssets" xlink:label="us-gaap_DerivativeAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeLiabilities" xlink:label="us-gaap_DerivativeLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="nwpx_DeferredCompensationPlanMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueInputsLevel1Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueInputsLevel2Member" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueInputsLevel3Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredCompensationPlanAssets" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DerivativeAssets" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsFairValueDisclosure" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DerivativeLiabilities" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:href="nwpx-20231231.xsd#statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PropertyAndEquipmentMember" xlink:label="nwpx_PropertyAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" xlink:label="us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationAxis" xlink:label="us-gaap_HedgingDesignationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationDomain" xlink:label="us-gaap_HedgingDesignationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationDomain" xlink:label="us-gaap_HedgingDesignationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestExpenseMember" xlink:label="us-gaap_InterestExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NondesignatedMember" xlink:label="us-gaap_NondesignatedMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesMember" xlink:label="us-gaap_SalesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_HedgingDesignationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_HedgingDesignationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_HedgingDesignationDomain" xlink:to="us-gaap_NondesignatedMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_HedgingDesignationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeStatementLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_SalesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="nwpx_PropertyAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_InterestExpenseMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:href="nwpx-20231231.xsd#statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CostOfSalesMember" xlink:label="us-gaap_CostOfSalesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SellingGeneralAndAdministrativeExpensesMember" xlink:label="us-gaap_SellingGeneralAndAdministrativeExpensesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeStatementLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_CostOfSalesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_SellingGeneralAndAdministrativeExpensesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_CA" xlink:label="country_CA" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_CA" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-disaggregation-of-revenue-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TransferredAtPointInTimeMember" xlink:label="us-gaap_TransferredAtPointInTimeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TransferredOverTimeMember" xlink:label="us-gaap_TransferredOverTimeMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:to="us-gaap_TransferredOverTimeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:to="us-gaap_TransferredAtPointInTimeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerAssetBillings" xlink:label="nwpx_ContractWithCustomerAssetBillings" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerAssetOther" xlink:label="nwpx_ContractWithCustomerAssetOther" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" xlink:label="nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerLiabilityBillings" xlink:label="nwpx_ContractWithCustomerLiabilityBillings" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerLiabilityOther" xlink:label="nwpx_ContractWithCustomerLiabilityOther" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetNet" xlink:label="us-gaap_ContractWithCustomerAssetNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiability" xlink:label="us-gaap_ContractWithCustomerLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:label="us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerAssetNet" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ContractWithCustomerAssetBillings" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ContractWithCustomerAssetOther" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerLiability" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ContractWithCustomerLiabilityBillings" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ContractWithCustomerLiabilityOther" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:label="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:label="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:label="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:label="us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationOtherAdjustments" xlink:label="us-gaap_IncomeTaxReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationOtherAdjustments" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredTaxAssetContractAssetsNet" xlink:label="nwpx_DeferredTaxAssetContractAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredTaxAssetTradeReceivableNet" xlink:label="nwpx_DeferredTaxAssetTradeReceivableNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxAssetsNet" xlink:label="us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsGross" xlink:label="us-gaap_DeferredTaxAssetsGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesPrepaidExpenses" xlink:label="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherAssetsMember" xlink:label="us-gaap_OtherAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="us-gaap_OtherAssetsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsInventory" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_DeferredTaxAssetTradeReceivableNet" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_DeferredTaxAssetContractAssetsNet" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsOther" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsGross" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsNet" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilities" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefits" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:label="us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:href="nwpx-20231231.xsd#statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EngineeredSteelPressurePipeMember" xlink:label="nwpx_EngineeredSteelPressurePipeMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:label="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CorporateNonSegmentMember" xlink:label="us-gaap_CorporateNonSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DepreciationAndAmortization" xlink:label="us-gaap_DepreciationAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidationItemsDomain" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="nwpx_EngineeredSteelPressurePipeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidationItemsDomain" xlink:to="us-gaap_CorporateNonSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GrossProfit" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DepreciationAndAmortization" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Assets" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-stockholders-equity" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SharesOutstanding" xlink:label="us-gaap_SharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_CommonStockMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AdditionalPaidInCapitalMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:label="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:label="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestExpense" xlink:label="us-gaap_InterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" xlink:label="us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InterestExpense" xlink:type="arc"/>
  </link:definitionLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.LAB
<SEQUENCE>12
<FILENAME>nwpx-20231231_lab.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION LABEL LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 02:45PM UTC 2024-03-05--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" 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/negatedLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodEndLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodEndLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodStartLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodStartLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTotalLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTerseLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedNetLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedNetLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/netLabel" xlink:href="http://www.xbrl.org/lrr/role/net-2009-12-16.xsd#netLabel" xlink:type="simple"/>
  <link:labelLink xlink:role="http://www.xbrl.org/2003/role/link" xlink:type="extended">
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DocumentAndEntityInformation" xlink:label="nwpx_DocumentAndEntityInformation" xlink:type="locator"/>
    <link:label xlink:label="nwpx_DocumentAndEntityInformation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document And Entity Information</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_DocumentAndEntityInformation" xlink:to="nwpx_DocumentAndEntityInformation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeNotionalAmount" xlink:label="us-gaap_DerivativeNotionalAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DerivativeNotionalAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DerivativeNotionalAmount</link:label>
    <link:label xlink:label="us-gaap_DerivativeNotionalAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Derivative, Notional Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DerivativeNotionalAmount" xlink:to="us-gaap_DerivativeNotionalAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NoteToFinancialStatementDetailsTextual-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note To Financial Statement Details Textual</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="nwpx_NoteToFinancialStatementDetailsTextual-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Intangible assets</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-significant-accounting-policies-policies" xlink:label="nwpx_statement-statement-significant-accounting-policies-policies" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-significant-accounting-policies-policies-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Significant Accounting Policies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-significant-accounting-policies-policies" xlink:to="nwpx_statement-statement-significant-accounting-policies-policies-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-tables" xlink:label="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 2 - Summary of Significant Accounting Policies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-tables" xlink:to="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income tax expense at federal statutory rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:to="us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingRelationshipDomain" xlink:label="us-gaap_HedgingRelationshipDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HedgingRelationshipDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Hedging Relationship [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HedgingRelationshipDomain" xlink:to="us-gaap_HedgingRelationshipDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-3-business-combinations-tables" xlink:label="nwpx_statement-statement-note-3-business-combinations-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-3-business-combinations-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 3 - Business Combinations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-3-business-combinations-tables" xlink:to="nwpx_statement-statement-note-3-business-combinations-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-4-inventories-tables" xlink:label="nwpx_statement-statement-note-4-inventories-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-4-inventories-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 4 - Inventories</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-4-inventories-tables" xlink:to="nwpx_statement-statement-note-4-inventories-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowHedgingMember" xlink:label="us-gaap_CashFlowHedgingMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashFlowHedgingMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash Flow Hedging [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashFlowHedgingMember" xlink:to="us-gaap_CashFlowHedgingMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-5-property-and-equipment-tables" xlink:label="nwpx_statement-statement-note-5-property-and-equipment-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-5-property-and-equipment-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Property and Equipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-5-property-and-equipment-tables" xlink:to="nwpx_statement-statement-note-5-property-and-equipment-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-6-goodwill-and-intangible-assets-tables" xlink:label="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 6 - Goodwill and Intangible Assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-tables" xlink:to="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NondesignatedMember" xlink:label="us-gaap_NondesignatedMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NondesignatedMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Not Designated as Hedging Instrument [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NondesignatedMember" xlink:to="us-gaap_NondesignatedMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-tables" xlink:label="nwpx_statement-statement-note-9-leases-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-9-leases-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-9-leases-tables" xlink:to="nwpx_statement-statement-note-9-leases-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-10-fair-value-measurements-tables" xlink:label="nwpx_statement-statement-note-10-fair-value-measurements-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-10-fair-value-measurements-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 10 - Fair Value Measurements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-10-fair-value-measurements-tables" xlink:to="nwpx_statement-statement-note-10-fair-value-measurements-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Prepaid expenses and other</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:label="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 11 - Derivative Instruments and Hedging Activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:to="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Trade and other receivables</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:label="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Hedging Relationship [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:to="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Tax Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxDisclosureTextBlock" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-14-sharebased-compensation-tables" xlink:label="nwpx_statement-statement-note-14-sharebased-compensation-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-14-sharebased-compensation-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 14 - Share-based Compensation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-14-sharebased-compensation-tables" xlink:to="nwpx_statement-statement-note-14-sharebased-compensation-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermLineOfCredit" xlink:label="us-gaap_LongTermLineOfCredit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LongTermLineOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Borrowings on line of credit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LongTermLineOfCredit" xlink:to="us-gaap_LongTermLineOfCredit-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-16-revenue-tables" xlink:label="nwpx_statement-statement-note-16-revenue-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-16-revenue-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 16 - Revenue</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-16-revenue-tables" xlink:to="nwpx_statement-statement-note-16-revenue-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationAxis" xlink:label="us-gaap_HedgingDesignationAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HedgingDesignationAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Hedging Designation [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_HedgingDesignationAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-tables" xlink:label="nwpx_statement-statement-note-17-income-taxes-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-17-income-taxes-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 17 - Income Taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-17-income-taxes-tables" xlink:to="nwpx_statement-statement-note-17-income-taxes-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationDomain" xlink:label="us-gaap_HedgingDesignationDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HedgingDesignationDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Hedging Designation [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HedgingDesignationDomain" xlink:to="us-gaap_HedgingDesignationDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Accumulated Other Comprehensive Loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:to="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Inventories</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DesignatedAsHedgingInstrumentMember" xlink:label="us-gaap_DesignatedAsHedgingInstrumentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DesignatedAsHedgingInstrumentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Designated as Hedging Instrument [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DesignatedAsHedgingInstrumentMember" xlink:to="us-gaap_DesignatedAsHedgingInstrumentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-19-segment-information-tables" xlink:label="nwpx_statement-statement-note-19-segment-information-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-19-segment-information-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 19 - Segment Information</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-19-segment-information-tables" xlink:to="nwpx_statement-statement-note-19-segment-information-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LiabilitiesCurrent</link:label>
    <link:label xlink:label="us-gaap_LiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total current liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_LiabilitiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:label="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule II - Valuation and Qualifying Accounts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:to="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:label="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 2 - Summary of Significant Accounting Policies - Loss Per Basic and Diluted Weighted Average Common Share Outstanding for Continuing and Discontinued Operations (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:to="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:label="nwpx_statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 3 - Business Combinations - Assets Acquired and Liabilities Assumed (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:to="nwpx_statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:label="nwpx_statement-statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-2-business-combinations-intangible-assets-acquired-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 2 - Business Combinations - Intangible Assets Acquired (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:to="nwpx_statement-statement-note-2-business-combinations-intangible-assets-acquired-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-3-business-combinations-pro-forma-summary-details" xlink:label="nwpx_statement-statement-note-3-business-combinations-pro-forma-summary-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-3-business-combinations-pro-forma-summary-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 3 - Business Combinations - Pro Forma Summary (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-3-business-combinations-pro-forma-summary-details" xlink:to="nwpx_statement-statement-note-3-business-combinations-pro-forma-summary-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-4-inventories-components-of-inventories-details" xlink:label="nwpx_statement-statement-note-4-inventories-components-of-inventories-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-4-inventories-components-of-inventories-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 4 - Inventories - Components of Inventories (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-4-inventories-components-of-inventories-details" xlink:to="nwpx_statement-statement-note-4-inventories-components-of-inventories-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Total purchase consideration</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationConsiderationTransferred1</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:label="nwpx_statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Property and Equipment - Property, Plant and Equipment (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:to="nwpx_statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Fair Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent</link:label>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Pension liability adjustment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:to="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:label="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 6 - Goodwill and Intangible Assets - Summary of Intangible Assets (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:to="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:label="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 6 - Goodwill and Intangible Assets - Summary of Estimated Amortization Expense (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:to="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Intangible Asset Acquired, Fair Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:to="us-gaap_FinitelivedIntangibleAssetsAcquired1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:label="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Intangible Asset Acquired, Useful Life (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:to="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:label="nwpx_statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Leases - Leases Recorded on the Consolidated Balance Sheet (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:to="nwpx_statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-lease-cost-details" xlink:label="nwpx_statement-statement-note-9-leases-lease-cost-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-9-leases-lease-cost-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Leases - Lease Cost (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-9-leases-lease-cost-details" xlink:to="nwpx_statement-statement-note-9-leases-lease-cost-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:label="nwpx_statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Leases - Future Maturities of Lease Liabilities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:to="nwpx_statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:label="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Changes in Accumulated Other Comprehensive Income Loss [Table Text Block]</link:label>
    <link:label xlink:label="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents schedule of changes in accumulated other comprehensive income loss.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:to="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:label="nwpx_statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Leases - Lease Terms and Discount Rates for Lease Liabilities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:to="nwpx_statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:label="nwpx_statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Leases - Other Information Related to Operating and Finance Leases (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:to="nwpx_statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:label="nwpx_statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 10 - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on Recurring Basis (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:to="nwpx_statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:label="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 11 - Derivative Instruments and Hedging Activities - Summary of Gains (Losses) (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:to="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">RSUs and PSAs granted (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:label="nwpx_statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 14 - Share-based Compensation - Share-based Compensation Expense (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:to="nwpx_statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired" xlink:label="us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired</link:label>
    <link:label xlink:label="us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Acquisition, Percentage of Voting Interests Acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired" xlink:to="us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:label="nwpx_statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 14 - Share-based Compensation - RSU and PSA Activity (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:to="nwpx_statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">RSUs and PSAs vested, weighted average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Unvested RSUs and PSAs canceled, weighted average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:label="nwpx_statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 16 - Revenue - Net Sales From Continuing Operations by Geographic Region (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:to="nwpx_statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Unvested RSUs and PSAs, weighted average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Unvested RSUs and PSAs, weighted average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-16-revenue-disaggregation-of-revenue-details" xlink:label="nwpx_statement-statement-note-16-revenue-disaggregation-of-revenue-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-16-revenue-disaggregation-of-revenue-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 16 - Revenue - Disaggregation of Revenue (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-16-revenue-disaggregation-of-revenue-details" xlink:to="nwpx_statement-statement-note-16-revenue-disaggregation-of-revenue-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Unvested RSUs and PSAs canceled (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:label="nwpx_statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 16 - Revenue - Contract With Customer Assets and Liabilities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:to="nwpx_statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:label="nwpx_statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 17 - Income Taxes - Income (Loss) from Continuing Operations (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:to="nwpx_statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Unvested RSUs and PSAs (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Unvested RSUs and PSAs (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:label="nwpx_statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 17 - Income Taxes - Summary of Components of Income Tax Expense for Continuing Operations (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:to="nwpx_statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:label="nwpx_statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 17 - Income Taxes - Effective Income Tax Rate Reconciliation (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:to="nwpx_statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:label="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other comprehensive income (loss) before reclassifications</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:to="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:label="nwpx_statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 17 - Income Taxes - Summary of Current and Noncurrent Deferred Tax Assets and Liabilities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:to="nwpx_statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ReclassifiedToInterestExpenseMember" xlink:label="nwpx_ReclassifiedToInterestExpenseMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ReclassifiedToInterestExpenseMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Reclassified to Interest Expense [Member]</link:label>
    <link:label xlink:label="nwpx_ReclassifiedToInterestExpenseMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Related to reclassified to interest expense.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ReclassifiedToInterestExpenseMember" xlink:to="nwpx_ReclassifiedToInterestExpenseMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent</link:label>
    <link:label xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Amounts reclassified from Accumulated other comprehensive loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:to="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:label="nwpx_statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 17 - Income Taxes - Summary of Changes in Unrecognized Tax Benefits (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:to="nwpx_statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">RSUs and PSAs granted (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:to="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details) (Parentheticals)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:to="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">RSUs and PSAs vested (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Accumulated Other Comprehensive Loss - Components of Accumulated Other Comprehensive Loss (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:to="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 18 - Accumulated Other Comprehensive Loss - Reclassification of Accumulated Other Comprehensive Loss (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:to="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermDebtCurrent" xlink:label="us-gaap_LongTermDebtCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LongTermDebtCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LongTermDebtCurrent" xlink:to="us-gaap_LongTermDebtCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:label="nwpx_statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 19 - Segment Information - Information Related to the Operations of the Company's Operating Segments (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:to="nwpx_statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ReclassifiedToNetSalesMember" xlink:label="nwpx_ReclassifiedToNetSalesMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ReclassifiedToNetSalesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Reclassified to Net Sales [Member]</link:label>
    <link:label xlink:label="nwpx_ReclassifiedToNetSalesMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Related to reclassified to net sales.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ReclassifiedToNetSalesMember" xlink:to="nwpx_ReclassifiedToNetSalesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:label="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:type="locator"/>
    <link:label xlink:label="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule II - Valuation and Qualifying Accounts - Valuation and Qualifying Accounts (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:to="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other comprehensive income (loss), net of tax:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatements" xlink:label="nwpx_NotesToFinancialStatements" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NotesToFinancialStatements-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Notes To Financial Statements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NotesToFinancialStatements" xlink:to="nwpx_NotesToFinancialStatements-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NotesToFinancialStatementsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Notes To Financial Statements [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="nwpx_NotesToFinancialStatementsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DebtInstrumentCovenantMinimumEbitda" xlink:label="nwpx_DebtInstrumentCovenantMinimumEbitda" xlink:type="locator"/>
    <link:label xlink:label="nwpx_DebtInstrumentCovenantMinimumEbitda-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_DebtInstrumentCovenantMinimumEbitda</link:label>
    <link:label xlink:label="nwpx_DebtInstrumentCovenantMinimumEbitda-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Instrument, Covenant, Minimum EBITDA</link:label>
    <link:label xlink:label="nwpx_DebtInstrumentCovenantMinimumEbitda-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the minimum amount of earnings before interest, taxes, depreciation and amortization as part of a debt covenant.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_DebtInstrumentCovenantMinimumEbitda" xlink:to="nwpx_DebtInstrumentCovenantMinimumEbitda-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:label="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:label xlink:label="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:to="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedPaymentsForRepurchaseOfCommonStock" xlink:label="nwpx_AccruedPaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_AccruedPaymentsForRepurchaseOfCommonStock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued payment for repurchase of common stock</link:label>
    <link:label xlink:label="nwpx_AccruedPaymentsForRepurchaseOfCommonStock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the total amount of payments accrued for the repurchase of common stock.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_AccruedPaymentsForRepurchaseOfCommonStock" xlink:to="nwpx_AccruedPaymentsForRepurchaseOfCommonStock-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:label="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:type="locator"/>
    <link:label xlink:label="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress</link:label>
    <link:label xlink:label="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment, Net, Excluding Construction In Progress</link:label>
    <link:label xlink:label="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services excluding construction in progress and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:to="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:label="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionProFormaInformationTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Acquisition, Pro Forma Information [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:to="us-gaap_BusinessAcquisitionProFormaInformationTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:label="us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionsProFormaRevenue-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Net sales</link:label>
    <link:label xlink:label="us-gaap_BusinessAcquisitionsProFormaRevenue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessAcquisitionsProFormaRevenue</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:to="us-gaap_BusinessAcquisitionsProFormaRevenue-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfManufacturingFacilities" xlink:label="nwpx_NumberOfManufacturingFacilities" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NumberOfManufacturingFacilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_NumberOfManufacturingFacilities</link:label>
    <link:label xlink:label="nwpx_NumberOfManufacturingFacilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Number of Manufacturing Facilities</link:label>
    <link:label xlink:label="nwpx_NumberOfManufacturingFacilities-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents number of manufacturing facilities.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NumberOfManufacturingFacilities" xlink:to="nwpx_NumberOfManufacturingFacilities-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" xlink:type="locator"/>
    <link:label xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Operating lease liabilities</link:label>
    <link:label xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities</link:label>
    <link:label xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of operating lease liabilities assumed at the acquisition date.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" xlink:type="locator"/>
    <link:label xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Operating lease right-of-use assets</link:label>
    <link:label xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets</link:label>
    <link:label xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of operating lease right-of-use assets acquired at the acquisition date.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiabilityCurrent" xlink:label="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ContractWithCustomerLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Contract liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:to="us-gaap_ContractWithCustomerLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesAndExciseTaxPayableCurrent" xlink:label="us-gaap_SalesAndExciseTaxPayableCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SalesAndExciseTaxPayableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SalesAndExciseTaxPayableCurrent</link:label>
    <link:label xlink:label="us-gaap_SalesAndExciseTaxPayableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Sales and Excise Tax Payable, Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SalesAndExciseTaxPayableCurrent" xlink:to="us-gaap_SalesAndExciseTaxPayableCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill and Intangible Assets Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:to="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccruedLiabilitiesCurrent" xlink:label="us-gaap_AccruedLiabilitiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccruedLiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccruedLiabilitiesCurrent" xlink:to="us-gaap_AccruedLiabilitiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PensionPlansDefinedBenefitMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Pension Plan [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PensionPlansDefinedBenefitMember" xlink:to="us-gaap_PensionPlansDefinedBenefitMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ShareRepurchaseProgramMember" xlink:label="nwpx_ShareRepurchaseProgramMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ShareRepurchaseProgramMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share Repurchase Program [Member]</link:label>
    <link:label xlink:label="nwpx_ShareRepurchaseProgramMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information regarding the share repurchase program.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ShareRepurchaseProgramMember" xlink:to="nwpx_ShareRepurchaseProgramMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountsPayableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounts payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountsPayableCurrent" xlink:to="us-gaap_AccountsPayableCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevolvingCreditFacilityMember" xlink:label="us-gaap_RevolvingCreditFacilityMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevolvingCreditFacilityMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revolving Credit Facility [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevolvingCreditFacilityMember" xlink:to="us-gaap_RevolvingCreditFacilityMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_Rule10b51TradingPlanDesignatedAmount" xlink:label="nwpx_Rule10b51TradingPlanDesignatedAmount" xlink:type="locator"/>
    <link:label xlink:label="nwpx_Rule10b51TradingPlanDesignatedAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_Rule10b51TradingPlanDesignatedAmount</link:label>
    <link:label xlink:label="nwpx_Rule10b51TradingPlanDesignatedAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Rule 10b5-1 Trading Plan, Designated Amount</link:label>
    <link:label xlink:label="nwpx_Rule10b51TradingPlanDesignatedAmount-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The amount of stock designated for repurchase under the Company's Rule 10b5-1 trading plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_Rule10b51TradingPlanDesignatedAmount" xlink:to="nwpx_Rule10b51TradingPlanDesignatedAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetirementPlanTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Plan Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccruedBonusesCurrent" xlink:label="us-gaap_AccruedBonusesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccruedBonusesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccruedBonusesCurrent</link:label>
    <link:label xlink:label="us-gaap_AccruedBonusesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accrued Bonuses, Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccruedBonusesCurrent" xlink:to="us-gaap_AccruedBonusesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetirementPlanTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Plan Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="us-gaap_RetirementPlanTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CapitalExpendituresIncurredButNotYetPaid" xlink:label="us-gaap_CapitalExpendituresIncurredButNotYetPaid" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CapitalExpendituresIncurredButNotYetPaid-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued property and equipment purchases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CapitalExpendituresIncurredButNotYetPaid" xlink:to="us-gaap_CapitalExpendituresIncurredButNotYetPaid-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityAxis" xlink:label="us-gaap_CreditFacilityAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CreditFacilityAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Credit Facility [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_TaxCreditCarryforwardExpirationYear" xlink:label="nwpx_TaxCreditCarryforwardExpirationYear" xlink:type="locator"/>
    <link:label xlink:label="nwpx_TaxCreditCarryforwardExpirationYear-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_TaxCreditCarryforwardExpirationYear</link:label>
    <link:label xlink:label="nwpx_TaxCreditCarryforwardExpirationYear-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Tax Credit Carryforward, Expiration Year</link:label>
    <link:label xlink:label="nwpx_TaxCreditCarryforwardExpirationYear-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Expiration year of the tax credit carryforward.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_TaxCreditCarryforwardExpirationYear" xlink:to="nwpx_TaxCreditCarryforwardExpirationYear-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" xlink:label="nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued consideration in acquisition of business</link:label>
    <link:label xlink:label="nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The total amount of consideration accrued in acquiring a business or in consideration for an asset received in a noncash (or part noncash) acquisition.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" xlink:to="nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WorkersCompensationLiabilityCurrent" xlink:label="us-gaap_WorkersCompensationLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WorkersCompensationLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_WorkersCompensationLiabilityCurrent</link:label>
    <link:label xlink:label="us-gaap_WorkersCompensationLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Workers' Compensation Liability, Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WorkersCompensationLiabilityCurrent" xlink:to="us-gaap_WorkersCompensationLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CreditFacilityDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Credit Facility [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CreditFacilityDomain" xlink:to="us-gaap_CreditFacilityDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" xlink:label="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" xlink:type="locator"/>
    <link:label xlink:label="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions</link:label>
    <link:label xlink:label="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Company Matching Percentage on First Eight Percent of Employee Contributions</link:label>
    <link:label xlink:label="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Company matching percentage on first 8% of employee contributions under defined contribution retirement plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" xlink:to="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PolicyTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PolicyTextBlockAbstract</link:label>
    <link:label xlink:label="us-gaap_PolicyTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accounting Policies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PolicyTextBlockAbstract" xlink:to="us-gaap_PolicyTextBlockAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TrademarksAndTradeNamesMember" xlink:label="us-gaap_TrademarksAndTradeNamesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TrademarksAndTradeNamesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trademarks and Trade Names [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TrademarksAndTradeNamesMember" xlink:to="us-gaap_TrademarksAndTradeNamesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PortlandHarborSuperfundSiteMember" xlink:label="nwpx_PortlandHarborSuperfundSiteMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_PortlandHarborSuperfundSiteMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Portland Harbor Superfund Site [Member]</link:label>
    <link:label xlink:label="nwpx_PortlandHarborSuperfundSiteMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the Portland Harbor Superfund Site.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_PortlandHarborSuperfundSiteMember" xlink:to="nwpx_PortlandHarborSuperfundSiteMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherIntangibleAssetsMember" xlink:label="us-gaap_OtherIntangibleAssetsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherIntangibleAssetsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Intangible Assets [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherIntangibleAssetsMember" xlink:to="us-gaap_OtherIntangibleAssetsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquireIntangibleAssets" xlink:label="us-gaap_PaymentsToAcquireIntangibleAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireIntangibleAssets</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireIntangibleAssets-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Purchases of intangible assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquireIntangibleAssets" xlink:to="us-gaap_PaymentsToAcquireIntangibleAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Capital expenditures</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Purchases of property and equipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OperatingLossCarryforwardsExpirationYear" xlink:label="nwpx_OperatingLossCarryforwardsExpirationYear" xlink:type="locator"/>
    <link:label xlink:label="nwpx_OperatingLossCarryforwardsExpirationYear-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_OperatingLossCarryforwardsExpirationYear</link:label>
    <link:label xlink:label="nwpx_OperatingLossCarryforwardsExpirationYear-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Loss Carryforwards, Expiration Year</link:label>
    <link:label xlink:label="nwpx_OperatingLossCarryforwardsExpirationYear-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Expiration year of the operating loss carryforward.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_OperatingLossCarryforwardsExpirationYear" xlink:to="nwpx_OperatingLossCarryforwardsExpirationYear-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerAssetOther" xlink:label="nwpx_ContractWithCustomerAssetOther" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ContractWithCustomerAssetOther-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Contract With Customer, Asset, Other</link:label>
    <link:label xlink:label="nwpx_ContractWithCustomerAssetOther-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the other portion of contract with customer, asset.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ContractWithCustomerAssetOther" xlink:to="nwpx_ContractWithCustomerAssetOther-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerAssetBillings" xlink:label="nwpx_ContractWithCustomerAssetBillings" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ContractWithCustomerAssetBillings-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Contract With Customer, Asset, Billings</link:label>
    <link:label xlink:label="nwpx_ContractWithCustomerAssetBillings-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents billings portion of the contract with customer, asset.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ContractWithCustomerAssetBillings" xlink:to="nwpx_ContractWithCustomerAssetBillings-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_The1941InterestRateSwapMember" xlink:label="nwpx_The1941InterestRateSwapMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_The1941InterestRateSwapMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">The 1.941% Interest Rate Swap [Member]</link:label>
    <link:label xlink:label="nwpx_The1941InterestRateSwapMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Relating to the 1.941% interest rate swap.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_The1941InterestRateSwapMember" xlink:to="nwpx_The1941InterestRateSwapMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerLiabilityBillings" xlink:label="nwpx_ContractWithCustomerLiabilityBillings" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ContractWithCustomerLiabilityBillings-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Contract With Customer, Liability, Billings</link:label>
    <link:label xlink:label="nwpx_ContractWithCustomerLiabilityBillings-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the billings portion of the contract with customer liability.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ContractWithCustomerLiabilityBillings" xlink:to="nwpx_ContractWithCustomerLiabilityBillings-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_The296InterestRateSwapMember" xlink:label="nwpx_The296InterestRateSwapMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_The296InterestRateSwapMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">The 2.96% Interest Rate Swap [Member]</link:label>
    <link:label xlink:label="nwpx_The296InterestRateSwapMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Relating to the 2.96% interest rate swap.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_The296InterestRateSwapMember" xlink:to="nwpx_The296InterestRateSwapMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Shares used in per share calculations:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxesPaidNet" xlink:label="us-gaap_IncomeTaxesPaidNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxesPaidNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash paid during the period for income taxes, net of refunds of $145, $23, and $79</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxesPaidNet" xlink:to="us-gaap_IncomeTaxesPaidNet-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" xlink:label="nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue recognized in advance of billings</link:label>
    <link:label xlink:label="nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the revenue recognized in advance of billings portion of the contract with customer, asset.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" xlink:to="nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent" xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent" xlink:type="locator"/>
    <link:label xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent</link:label>
    <link:label xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Employee Contribution Percentage for Which Company Will Match at One Hundred Percent</link:label>
    <link:label xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Employee contribution for which company will match at 100% under defined contribution retirement plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent" xlink:to="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkusaDefinedContributionPlanMember" xlink:label="nwpx_ParkusaDefinedContributionPlanMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ParkusaDefinedContributionPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ParkUSA Defined Contribution Plan [Member]</link:label>
    <link:label xlink:label="nwpx_ParkusaDefinedContributionPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Information pertaining to the ParkUSA Defined Contribution Plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ParkusaDefinedContributionPlanMember" xlink:to="nwpx_ParkusaDefinedContributionPlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesCurrentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current liabilities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingencyAccrualCarryingValueCurrent" xlink:label="us-gaap_LossContingencyAccrualCarryingValueCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LossContingencyAccrualCarryingValueCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LossContingencyAccrualCarryingValueCurrent</link:label>
    <link:label xlink:label="us-gaap_LossContingencyAccrualCarryingValueCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Loss Contingency, Accrual, Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LossContingencyAccrualCarryingValueCurrent" xlink:to="us-gaap_LossContingencyAccrualCarryingValueCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerLiabilityOther" xlink:label="nwpx_ContractWithCustomerLiabilityOther" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ContractWithCustomerLiabilityOther-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Contract With Customer, Liability, Other</link:label>
    <link:label xlink:label="nwpx_ContractWithCustomerLiabilityOther-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the other portion of contract with customer, liability.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ContractWithCustomerLiabilityOther" xlink:to="nwpx_ContractWithCustomerLiabilityOther-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SupplementalCashFlowInformationAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Supplemental disclosure of cash flow information:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_SupplementalCashFlowInformationAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Assets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Total assets</link:label>
    <link:label xlink:label="us-gaap_Assets-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Assets" xlink:to="us-gaap_Assets-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredTaxAssetContractAssetsNet" xlink:label="nwpx_DeferredTaxAssetContractAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="nwpx_DeferredTaxAssetContractAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_DeferredTaxAssetContractAssetsNet</link:label>
    <link:label xlink:label="nwpx_DeferredTaxAssetContractAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Contract assets, net</link:label>
    <link:label xlink:label="nwpx_DeferredTaxAssetContractAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount before allocation of valuation allowances of deferred tax asset attributable to contract assets, net.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_DeferredTaxAssetContractAssetsNet" xlink:to="nwpx_DeferredTaxAssetContractAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PatentsMember" xlink:label="us-gaap_PatentsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PatentsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Patents [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PatentsMember" xlink:to="us-gaap_PatentsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions</link:label>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement, Nonvested Award, Excluding Option, Cost Not yet Recognized, Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock" xlink:label="nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Summary of Valuation and Qualifying Accounts [Table Text Block]</link:label>
    <link:label xlink:label="nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">A schedule of allowance and reserve accounts including their beginning and ending balances, as well as a reconciliation by type of activity during the period. Alternatively, disclosure of the required information may be within the footnotes to the financial statements or a supplemental schedule to the financial statements.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock" xlink:to="nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived" xlink:label="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived" xlink:type="locator"/>
    <link:label xlink:label="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived</link:label>
    <link:label xlink:label="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Other Commitment, Amount Paid for Equipment Purchased Yet Not Received</link:label>
    <link:label xlink:label="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of commitment of payment for equipment purchased but not received.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived" xlink:to="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</link:label>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OneSppCustomerMember" xlink:label="nwpx_OneSppCustomerMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_OneSppCustomerMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">One SPP Customer [Member]</link:label>
    <link:label xlink:label="nwpx_OneSppCustomerMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents one SPP customer.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_OneSppCustomerMember" xlink:to="nwpx_OneSppCustomerMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CustomerRelationshipsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Customer Relationships [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CustomerRelationshipsMember" xlink:to="us-gaap_CustomerRelationshipsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EngineeredSteelPressurePipeMember" xlink:label="nwpx_EngineeredSteelPressurePipeMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_EngineeredSteelPressurePipeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Engineered Steel Pressure Pipe [Member]</link:label>
    <link:label xlink:label="nwpx_EngineeredSteelPressurePipeMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents Engineered Steel Pressure Pipe segment.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_EngineeredSteelPressurePipeMember" xlink:to="nwpx_EngineeredSteelPressurePipeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:label="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_PrecastInfrastructureAndEngineeredSystemsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Precast Infrastructure and Engineered Systems [Member]</link:label>
    <link:label xlink:label="nwpx_PrecastInfrastructureAndEngineeredSystemsMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents Precast Infrastructure and Engineered Systems segment.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:to="nwpx_PrecastInfrastructureAndEngineeredSystemsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BacklogMember" xlink:label="nwpx_BacklogMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_BacklogMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Backlog [Member]</link:label>
    <link:label xlink:label="nwpx_BacklogMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information related to backlog.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_BacklogMember" xlink:to="nwpx_BacklogMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxAssetsNet" xlink:label="us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred income tax assets, included in Other assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxAssetsNet" xlink:to="us-gaap_DeferredIncomeTaxAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finite-Lived Intangible Assets by Major Class [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finite-Lived Intangible Assets, Major Class Name [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:label="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:to="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetNet" xlink:label="us-gaap_ContractWithCustomerAssetNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ContractWithCustomerAssetNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ContractWithCustomerAssetNet</link:label>
    <link:label xlink:label="us-gaap_ContractWithCustomerAssetNet-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balance, beginning of year</link:label>
    <link:label xlink:label="us-gaap_ContractWithCustomerAssetNet-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balance, end of year</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ContractWithCustomerAssetNet" xlink:to="us-gaap_ContractWithCustomerAssetNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Award Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AwardTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Award Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_AwardTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:label xlink:label="us-gaap_NetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_NetIncomeLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Intangible Assets, Accumulated amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Intangible assets, net</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total amortization expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:label="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from insurance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:to="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Intangible Assets, Gross</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:to="us-gaap_FiniteLivedIntangibleAssetsGross-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestCostsCapitalized" xlink:label="us-gaap_InterestCostsCapitalized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InterestCostsCapitalized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_InterestCostsCapitalized</link:label>
    <link:label xlink:label="us-gaap_InterestCostsCapitalized-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Interest Costs Capitalized</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InterestCostsCapitalized" xlink:to="us-gaap_InterestCostsCapitalized-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_GainOnInsuranceProceeds" xlink:label="nwpx_GainOnInsuranceProceeds" xlink:type="locator"/>
    <link:label xlink:label="nwpx_GainOnInsuranceProceeds-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_GainOnInsuranceProceeds</link:label>
    <link:label xlink:label="nwpx_GainOnInsuranceProceeds-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Gain on insurance proceeds</link:label>
    <link:label xlink:label="nwpx_GainOnInsuranceProceeds-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the amount of gain on insurance proceeds recognized during the period.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_GainOnInsuranceProceeds" xlink:to="nwpx_GainOnInsuranceProceeds-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PerformanceSharesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Performance Shares [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PerformanceSharesMember" xlink:to="us-gaap_PerformanceSharesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingencyNatureDomain" xlink:label="us-gaap_LossContingencyNatureDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LossContingencyNatureDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Loss Contingency, Nature [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LossContingencyNatureDomain" xlink:to="us-gaap_LossContingencyNatureDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:label="us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillPurchaseAccountingAdjustments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_GoodwillPurchaseAccountingAdjustments</link:label>
    <link:label xlink:label="us-gaap_GoodwillPurchaseAccountingAdjustments-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Goodwill, Purchase Accounting Adjustments</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:to="us-gaap_GoodwillPurchaseAccountingAdjustments-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" xlink:label="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" xlink:type="locator"/>
    <link:label xlink:label="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition</link:label>
    <link:label xlink:label="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Payment of working capital adjustment in acquisition of business</link:label>
    <link:label xlink:label="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the payment of working capital adjustment in business acquisition.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" xlink:to="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Secured Overnight Financing Rate (SOFR) [Member]</link:label>
    <link:label xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Related to Secured Overnight Financing Rate (SOFR).</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:to="nwpx_SecuredOvernightFinancingRateSOFRMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:label="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:type="locator"/>
    <link:label xlink:label="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">State franchise tax</link:label>
    <link:label xlink:label="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the amount of state franchise tax.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:to="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:label="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LossContingenciesByNatureOfContingencyAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Loss Contingency Nature [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:to="us-gaap_LossContingenciesByNatureOfContingencyAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:label="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:type="locator"/>
    <link:label xlink:label="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued interest on uncertain income tax positions</link:label>
    <link:label xlink:label="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the amount of accrued interest on uncertain income tax positions.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:to="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationDisclosureTextBlock" xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Combination Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:to="us-gaap_BusinessCombinationDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:label="us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommitmentsAndContingenciesDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Commitments and Contingencies Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:to="us-gaap_CommitmentsAndContingenciesDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Less accumulated depreciation and amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property and equipment, net</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment, Net</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentNet" xlink:to="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock" xlink:label="us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Business Acquisitions, by Acquisition [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock" xlink:to="us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Goodwill" xlink:to="us-gaap_Goodwill-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property and equipment, gross</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_PropertyPlantAndEquipmentGross-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Park Environmental Equipment, LLC [Member]</link:label>
    <link:label xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents Park Environmental Equipment, LLC.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CapitalAdditionsMember" xlink:label="us-gaap_CapitalAdditionsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CapitalAdditionsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Capital Addition Purchase Commitments [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CapitalAdditionsMember" xlink:to="us-gaap_CapitalAdditionsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeAssets" xlink:label="us-gaap_DerivativeAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DerivativeAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DerivativeAssets</link:label>
    <link:label xlink:label="us-gaap_DerivativeAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Derivative assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DerivativeAssets" xlink:to="us-gaap_DerivativeAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DerivativeInstrumentRiskAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Derivative Instrument [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeInstrumentRiskAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DerivativeContractTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Derivative Contract [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DerivativeContractTypeDomain" xlink:to="us-gaap_DerivativeContractTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash flows from investing activities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net income per common share</link:label>
    <link:label xlink:label="us-gaap_EarningsPerShareAbstract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Net income per share:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_CA" xlink:label="country_CA" xlink:type="locator"/>
    <link:label xlink:label="country_CA-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">CANADA</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="country_CA" xlink:to="country_CA-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income tax expense</link:label>
    <link:label xlink:label="us-gaap_IncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total income tax expense</link:label>
    <link:label xlink:label="us-gaap_IncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Tax (expense) benefit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" xlink:label="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" xlink:type="locator"/>
    <link:label xlink:label="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax</link:label>
    <link:label xlink:label="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Increase (Decrease) in Revenue from Contract with Customers, Including Assessed Tax</link:label>
    <link:label xlink:label="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The increase (decrease) during the period of the amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" xlink:to="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInAccountsPayable</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accounts payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" xlink:label="us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Gains (losses) recognized on derivatives</link:label>
    <link:label xlink:label="us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" xlink:to="us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_InterimFundingAgreementifaMember" xlink:label="nwpx_InterimFundingAgreementifaMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_InterimFundingAgreementifaMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Interim Funding AgreementIFA [Member]</link:label>
    <link:label xlink:label="nwpx_InterimFundingAgreementifaMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the Interim Funding Agreement with Wells Fargo Finance Inc.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_InterimFundingAgreementifaMember" xlink:to="nwpx_InterimFundingAgreementifaMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax</link:label>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Pension liability adjustment, tax expense/benefit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_StockAwardsMember" xlink:label="nwpx_StockAwardsMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_StockAwardsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stock Awards [Member]</link:label>
    <link:label xlink:label="nwpx_StockAwardsMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents stock awards.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_StockAwardsMember" xlink:to="nwpx_StockAwardsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanFairValueOfPlanAssets" xlink:label="us-gaap_DefinedBenefitPlanFairValueOfPlanAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanFairValueOfPlanAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DefinedBenefitPlanFairValueOfPlanAssets</link:label>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanFairValueOfPlanAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Defined Benefit Plan, Plan Assets, Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DefinedBenefitPlanFairValueOfPlanAssets" xlink:to="us-gaap_DefinedBenefitPlanFairValueOfPlanAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AllowanceForCreditLossMember" xlink:label="us-gaap_AllowanceForCreditLossMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AllowanceForCreditLossMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">SEC Schedule, 12-09, Allowance, Credit Loss [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AllowanceForCreditLossMember" xlink:to="us-gaap_AllowanceForCreditLossMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AllocatedShareBasedCompensationExpense</link:label>
    <link:label xlink:label="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based compensation expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AllocatedShareBasedCompensationExpense" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent</link:label>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Unrealized gain (loss) on cash flow hedges, tax expense/benefit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:label xlink:label="dei_AmendmentFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amendment Flag</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AmendmentFlag" xlink:to="dei_AmendmentFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ComprehensiveIncomeNetOfTax</link:label>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Comprehensive income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:label xlink:label="dei_CityAreaCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">City Area Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CityAreaCode" xlink:to="dei_CityAreaCode-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UseOfEstimates" xlink:label="us-gaap_UseOfEstimates" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UseOfEstimates-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Use of Estimates, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UseOfEstimates" xlink:to="us-gaap_UseOfEstimates-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">New Accounting Pronouncements, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accrued and other liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" xlink:to="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets" xlink:label="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets</link:label>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Defined Benefit Plan, Assumptions Used Calculating Net Periodic Benefit Cost, Expected Long-Term Rate of Return on Plan Assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets" xlink:to="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SharesOutstanding" xlink:label="us-gaap_SharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharesOutstanding</link:label>
    <link:label xlink:label="us-gaap_SharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balances (in shares)</link:label>
    <link:label xlink:label="us-gaap_SharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balances (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharesOutstanding" xlink:to="us-gaap_SharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, shares outstanding (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesOutstanding" xlink:to="us-gaap_CommonStockSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockSharesOutstanding" xlink:label="us-gaap_PreferredStockSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, shares outstanding (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockSharesOutstanding" xlink:to="us-gaap_PreferredStockSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtWeightedAverageInterestRate" xlink:label="us-gaap_DebtWeightedAverageInterestRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtWeightedAverageInterestRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtWeightedAverageInterestRate</link:label>
    <link:label xlink:label="us-gaap_DebtWeightedAverageInterestRate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt, Weighted Average Interest Rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtWeightedAverageInterestRate" xlink:to="us-gaap_DebtWeightedAverageInterestRate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:label xlink:label="dei_CurrentFiscalYearEndDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current Fiscal Year End Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CurrentFiscalYearEndDate" xlink:to="dei_CurrentFiscalYearEndDate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtInstrumentBasisSpreadOnVariableRate1</link:label>
    <link:label xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Instrument, Basis Spread on Variable Rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:to="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_VariableLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Variable lease cost</link:label>
    <link:label xlink:label="us-gaap_VariableLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_VariableLeaseCost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_VariableLeaseCost" xlink:to="us-gaap_VariableLeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LeaseCost</link:label>
    <link:label xlink:label="us-gaap_LeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total lease cost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_LeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate" xlink:label="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate</link:label>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Defined Benefit Plan, Assumptions Used Calculating Benefit Obligation, Discount Rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate" xlink:to="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Prepaid expenses and other assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation" xlink:label="us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation</link:label>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Defined Benefit Plan, Accumulated Benefit Obligation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation" xlink:to="us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Operating leases, weighted-average discount rate</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:to="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentFiscalPeriodFocus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Fiscal Period Focus</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFiscalPeriodFocus" xlink:to="dei_DocumentFiscalPeriodFocus-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Operating lease cost</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingLeaseCost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseCost" xlink:to="us-gaap_OperatingLeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentFiscalYearFocus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Fiscal Year Focus</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFiscalYearFocus" xlink:to="dei_DocumentFiscalYearFocus-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConsolidationPolicyTextBlock" xlink:label="us-gaap_ConsolidationPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConsolidationPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidation, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConsolidationPolicyTextBlock" xlink:to="us-gaap_ConsolidationPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShortTermLeaseCost" xlink:label="us-gaap_ShortTermLeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShortTermLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Short-term lease cost</link:label>
    <link:label xlink:label="us-gaap_ShortTermLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShortTermLeaseCost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShortTermLeaseCost" xlink:to="us-gaap_ShortTermLeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseCostTableTextBlock" xlink:label="us-gaap_LeaseCostTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseCostTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease, Cost [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseCostTableTextBlock" xlink:to="us-gaap_LeaseCostTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Right-of-use assets obtained in exchange for finance lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentPeriodEndDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Period End Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentPeriodEndDate" xlink:to="dei_DocumentPeriodEndDate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Right-of-use assets obtained in exchange for operating lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Operating leases, weighted-average remaining lease term (Year)</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:to="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityFileNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity File Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityFileNumber" xlink:to="dei_EntityFileNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityEmergingGrowthCompany-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Emerging Growth Company</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityEmergingGrowthCompany" xlink:to="dei_EntityEmergingGrowthCompany-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentFaceAmount" xlink:label="us-gaap_DebtInstrumentFaceAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentFaceAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtInstrumentFaceAmount</link:label>
    <link:label xlink:label="us-gaap_DebtInstrumentFaceAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Instrument, Face Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentFaceAmount" xlink:to="us-gaap_DebtInstrumentFaceAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentType-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Type</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentType" xlink:to="dei_DocumentType-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:label xlink:label="dei_EntitySmallBusiness-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Small Business</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntitySmallBusiness" xlink:to="dei_EntitySmallBusiness-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityShellCompany-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Shell Company</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityShellCompany" xlink:to="dei_EntityShellCompany-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentInformationLineItems-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Information [Line Items]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentInformationLineItems-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentInformationTable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Information [Table]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentInformationTable" xlink:to="dei_DocumentInformationTable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityPublicFloat" xlink:label="dei_EntityPublicFloat" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityPublicFloat-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Public Float</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityPublicFloat" xlink:to="dei_EntityPublicFloat-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityFilerCategory-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Filer Category</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityFilerCategory" xlink:to="dei_EntityFilerCategory-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentAxis" xlink:label="us-gaap_DebtInstrumentAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Instrument [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCurrentReportingStatus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Current Reporting Status</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCurrentReportingStatus" xlink:to="dei_EntityCurrentReportingStatus-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Instrument, Name [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="us-gaap_DebtInstrumentNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityVoluntaryFilers" xlink:label="dei_EntityVoluntaryFilers" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityVoluntaryFilers-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Voluntary Filers</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityVoluntaryFilers" xlink:to="dei_EntityVoluntaryFilers-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:label="us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationAcquisitionRelatedCosts-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationAcquisitionRelatedCosts</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationAcquisitionRelatedCosts-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Acquisition Related Costs</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:to="us-gaap_BusinessCombinationAcquisitionRelatedCosts-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="dei_EntityWellKnownSeasonedIssuer" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityWellKnownSeasonedIssuer-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Well-known Seasoned Issuer</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityWellKnownSeasonedIssuer" xlink:to="dei_EntityWellKnownSeasonedIssuer-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_VariableRateDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Variable Rate [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_VariableRateDomain" xlink:to="us-gaap_VariableRateDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PropertyAndEquipmentMember" xlink:label="nwpx_PropertyAndEquipmentMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_PropertyAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property and Equipment [Member]</link:label>
    <link:label xlink:label="nwpx_PropertyAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents property and equipment.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_PropertyAndEquipmentMember" xlink:to="nwpx_PropertyAndEquipmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock" xlink:label="nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Lease, Assets and Liabilities [Table Text Block]</link:label>
    <link:label xlink:label="nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The tabular disclosure for assets and liabilities of leases of the lessee.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock" xlink:to="nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:label="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued Liabilities and Other Long-term Liabilities [Member]</link:label>
    <link:label xlink:label="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents accrued liabilities and other long-term liabilities.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:to="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EquipmentUnderFinanceLeaseMember" xlink:label="nwpx_EquipmentUnderFinanceLeaseMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_EquipmentUnderFinanceLeaseMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equipment Under Finance Lease [Member]</link:label>
    <link:label xlink:label="nwpx_EquipmentUnderFinanceLeaseMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents equipment under finance lease.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_EquipmentUnderFinanceLeaseMember" xlink:to="nwpx_EquipmentUnderFinanceLeaseMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ForeignExchangeForward1Member" xlink:label="nwpx_ForeignExchangeForward1Member" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ForeignExchangeForward1Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign Exchange Forward 1 [Member]</link:label>
    <link:label xlink:label="nwpx_ForeignExchangeForward1Member-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents one forward exchange forward contract</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ForeignExchangeForward1Member" xlink:to="nwpx_ForeignExchangeForward1Member-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_VariableRateAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Variable Rate [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseRightOfUseAsset" xlink:label="nwpx_LeaseRightOfUseAsset" xlink:type="locator"/>
    <link:label xlink:label="nwpx_LeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_LeaseRightOfUseAsset</link:label>
    <link:label xlink:label="nwpx_LeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total right-of-use assets</link:label>
    <link:label xlink:label="nwpx_LeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of lessee's right to use underlying asset under lease.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_LeaseRightOfUseAsset" xlink:to="nwpx_LeaseRightOfUseAsset-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EquityOfferingMaximumOfferingAmount" xlink:label="nwpx_EquityOfferingMaximumOfferingAmount" xlink:type="locator"/>
    <link:label xlink:label="nwpx_EquityOfferingMaximumOfferingAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_EquityOfferingMaximumOfferingAmount</link:label>
    <link:label xlink:label="nwpx_EquityOfferingMaximumOfferingAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Equity Offering, Maximum Offering Amount</link:label>
    <link:label xlink:label="nwpx_EquityOfferingMaximumOfferingAmount-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Maximum value of company's equity authorized for issuance under equity offering.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_EquityOfferingMaximumOfferingAmount" xlink:to="nwpx_EquityOfferingMaximumOfferingAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AtthemarketOfferingMember" xlink:label="nwpx_AtthemarketOfferingMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_AtthemarketOfferingMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">At-the-Market Offering [Member]</link:label>
    <link:label xlink:label="nwpx_AtthemarketOfferingMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the At-the-Market Offering</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_AtthemarketOfferingMember" xlink:to="nwpx_AtthemarketOfferingMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskPercentage1" xlink:label="us-gaap_ConcentrationRiskPercentage1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConcentrationRiskPercentage1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ConcentrationRiskPercentage1</link:label>
    <link:label xlink:label="us-gaap_ConcentrationRiskPercentage1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Concentration Risk, Percentage</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConcentrationRiskPercentage1" xlink:to="us-gaap_ConcentrationRiskPercentage1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based compensation expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Trade and other receivables</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:to="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:label="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Comprehensive Income [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:to="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityTaxIdentificationNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Tax Identification Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityTaxIdentificationNumber" xlink:to="dei_EntityTaxIdentificationNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCentralIndexKey-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Central Index Key</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCentralIndexKey" xlink:to="dei_EntityCentralIndexKey-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DepreciationAndAmortization" xlink:label="us-gaap_DepreciationAndAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DepreciationAndAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Depreciation and amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DepreciationAndAmortization" xlink:to="us-gaap_DepreciationAndAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityRegistrantName-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Registrant Name</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityRegistrantName" xlink:to="dei_EntityRegistrantName-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_MX" xlink:label="country_MX" xlink:type="locator"/>
    <link:label xlink:label="country_MX-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">MEXICO</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="country_MX" xlink:to="country_MX-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityDomain" xlink:to="dei_EntityDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CustomerConcentrationRiskMember" xlink:label="us-gaap_CustomerConcentrationRiskMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CustomerConcentrationRiskMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Customer Concentration Risk [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CustomerConcentrationRiskMember" xlink:to="us-gaap_CustomerConcentrationRiskMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:label xlink:label="dei_LegalEntityAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Legal Entity [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_LegalEntityAxis" xlink:to="dei_LegalEntityAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressAddressLine1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Address Line One</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressAddressLine1" xlink:to="dei_EntityAddressAddressLine1-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_MaximumSeniorLeverageRatio" xlink:label="nwpx_MaximumSeniorLeverageRatio" xlink:type="locator"/>
    <link:label xlink:label="nwpx_MaximumSeniorLeverageRatio-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_MaximumSeniorLeverageRatio</link:label>
    <link:label xlink:label="nwpx_MaximumSeniorLeverageRatio-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Maximum Senior Leverage Ratio</link:label>
    <link:label xlink:label="nwpx_MaximumSeniorLeverageRatio-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The maximum senior leverage ratio.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_MaximumSeniorLeverageRatio" xlink:to="nwpx_MaximumSeniorLeverageRatio-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_NonRule10b51ArrTrmntdFlag" xlink:label="ecd_NonRule10b51ArrTrmntdFlag" xlink:type="locator"/>
    <link:label xlink:label="ecd_NonRule10b51ArrTrmntdFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ecd_NonRule10b51ArrTrmntdFlag</link:label>
    <link:label xlink:label="ecd_NonRule10b51ArrTrmntdFlag-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Non-Rule 10b5-1 Arrangement Terminated [Flag]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ecd_NonRule10b51ArrTrmntdFlag" xlink:to="ecd_NonRule10b51ArrTrmntdFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AmortizationOfIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AmortizationOfIntangibleAssets</link:label>
    <link:label xlink:label="us-gaap_AmortizationOfIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Amortization of intangible assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AmortizationOfIntangibleAssets" xlink:to="us-gaap_AmortizationOfIntangibleAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressCityOrTown-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, City or Town</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressCityOrTown" xlink:to="dei_EntityAddressCityOrTown-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_Rule10b51ArrTrmntdFlag" xlink:label="ecd_Rule10b51ArrTrmntdFlag" xlink:type="locator"/>
    <link:label xlink:label="ecd_Rule10b51ArrTrmntdFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ecd_Rule10b51ArrTrmntdFlag</link:label>
    <link:label xlink:label="ecd_Rule10b51ArrTrmntdFlag-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Rule 10b5-1 Arrangement Terminated [Flag]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ecd_Rule10b51ArrTrmntdFlag" xlink:to="ecd_Rule10b51ArrTrmntdFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_Rule10b51ArrAdoptedFlag" xlink:label="ecd_Rule10b51ArrAdoptedFlag" xlink:type="locator"/>
    <link:label xlink:label="ecd_Rule10b51ArrAdoptedFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ecd_Rule10b51ArrAdoptedFlag</link:label>
    <link:label xlink:label="ecd_Rule10b51ArrAdoptedFlag-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Rule 10b5-1 Arrangement Adopted [Flag]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ecd_Rule10b51ArrAdoptedFlag" xlink:to="ecd_Rule10b51ArrAdoptedFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressPostalZipCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressPostalZipCode" xlink:to="dei_EntityAddressPostalZipCode-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressStateOrProvince-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, State or Province</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressStateOrProvince" xlink:to="dei_EntityAddressStateOrProvince-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_NonRule10b51ArrAdoptedFlag" xlink:label="ecd_NonRule10b51ArrAdoptedFlag" xlink:type="locator"/>
    <link:label xlink:label="ecd_NonRule10b51ArrAdoptedFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ecd_NonRule10b51ArrAdoptedFlag</link:label>
    <link:label xlink:label="ecd_NonRule10b51ArrAdoptedFlag-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Non-Rule 10b5-1 Arrangement Adopted [Flag]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ecd_NonRule10b51ArrAdoptedFlag" xlink:to="ecd_NonRule10b51ArrAdoptedFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskByTypeAxis" xlink:label="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConcentrationRiskByTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Concentration Risk Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskByTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Allowance for doubtful accounts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_MtrlTermsOfTrdArrTextBlock" xlink:label="ecd_MtrlTermsOfTrdArrTextBlock" xlink:type="locator"/>
    <link:label xlink:label="ecd_MtrlTermsOfTrdArrTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Material Terms of Trading Arrangement [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ecd_MtrlTermsOfTrdArrTextBlock" xlink:to="ecd_MtrlTermsOfTrdArrTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConcentrationRiskTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Concentration Risk Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConcentrationRiskTypeDomain" xlink:to="us-gaap_ConcentrationRiskTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Common Stock, Shares Outstanding</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCommonStockSharesOutstanding" xlink:to="dei_EntityCommonStockSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockRepurchasedAndRetiredDuringPeriodValue</link:label>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Stock Repurchased and Retired During Period, Value</link:label>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchase of common stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockRepurchasedAndRetiredDuringPeriodShares</link:label>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Stock Repurchased and Retired During Period, Shares (in shares)</link:label>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchase of common stock (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesRevenueNetMember" xlink:label="us-gaap_SalesRevenueNetMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SalesRevenueNetMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue Benchmark [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SalesRevenueNetMember" xlink:to="us-gaap_SalesRevenueNetMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermDebtTextBlock" xlink:label="us-gaap_LongTermDebtTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LongTermDebtTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-Term Debt [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LongTermDebtTextBlock" xlink:to="us-gaap_LongTermDebtTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInInventories-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInInventories</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInInventories-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Inventories</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInInventories" xlink:to="us-gaap_IncreaseDecreaseInInventories-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:label xlink:label="dei_TradingSymbol-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trading Symbol</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_TradingSymbol" xlink:to="dei_TradingSymbol-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost" xlink:label="us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost</link:label>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Defined Benefit Plan, Net Periodic Benefit Cost (Credit)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost" xlink:to="us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet" xlink:label="us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet</link:label>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Increase (Decrease), Net</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet" xlink:to="us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Concentration Risk Benchmark [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskByBenchmarkAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Concentration Risk Benchmark [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_LocalPhoneNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Local Phone Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_LocalPhoneNumber" xlink:to="dei_LocalPhoneNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity</link:label>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Remaining Borrowing Capacity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:to="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_TableTextBlock</link:label>
    <link:label xlink:label="us-gaap_TableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Notes Tables</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_TableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity</link:label>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Maximum Borrowing Capacity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:to="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:label="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage</link:label>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Unused Capacity, Commitment Fee Percentage</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:to="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Issuance of common stock under stock compensation plans, net of tax withholdings (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SellingGeneralAndAdministrativeExpense" xlink:label="us-gaap_SellingGeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SellingGeneralAndAdministrativeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Selling, general, and administrative expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SellingGeneralAndAdministrativeExpense" xlink:to="us-gaap_SellingGeneralAndAdministrativeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation</link:label>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Issuance of common stock under stock compensation plans, net of tax withholdings</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:to="us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityLenderDomain" xlink:label="us-gaap_LineOfCreditFacilityLenderDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityLenderDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Lender [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityLenderDomain" xlink:to="us-gaap_LineOfCreditFacilityLenderDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryRawMaterialsNetOfReserves" xlink:label="us-gaap_InventoryRawMaterialsNetOfReserves" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryRawMaterialsNetOfReserves-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Raw materials</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryRawMaterialsNetOfReserves" xlink:to="us-gaap_InventoryRawMaterialsNetOfReserves-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventorySuppliesNetOfReserves" xlink:label="us-gaap_InventorySuppliesNetOfReserves" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventorySuppliesNetOfReserves-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Supplies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventorySuppliesNetOfReserves" xlink:to="us-gaap_InventorySuppliesNetOfReserves-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityAxis" xlink:label="us-gaap_LineOfCreditFacilityAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lender Name [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityAxis" xlink:to="us-gaap_LineOfCreditFacilityAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LiabilitiesAndStockholdersEquity</link:label>
    <link:label xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total liabilities and stockholders&#8217; equity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:label="us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryFinishedGoodsNetOfReserves-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finished goods</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:to="us-gaap_InventoryFinishedGoodsNetOfReserves-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryWorkInProcessNetOfReserves" xlink:label="us-gaap_InventoryWorkInProcessNetOfReserves" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryWorkInProcessNetOfReserves-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Work-in-process</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryWorkInProcessNetOfReserves" xlink:to="us-gaap_InventoryWorkInProcessNetOfReserves-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:label xlink:label="country_US-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">UNITED STATES</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="country_US" xlink:to="country_US-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" xlink:label="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Unvested Restricted Stock Units and Performance Share Awards Activity [Table Text Block]</link:label>
    <link:label xlink:label="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of the change in restricted stock units (RSUs) and performance share awards (PSAs).</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" xlink:to="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:label="us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInContractWithCustomerAsset-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInContractWithCustomerAsset</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInContractWithCustomerAsset-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Contract assets, net</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:to="us-gaap_IncreaseDecreaseInContractWithCustomerAsset-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retained earnings</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accumulated other comprehensive loss</link:label>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtDisclosureTextBlock" xlink:to="us-gaap_DebtDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:label="us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Derivative Instruments, Gain (Loss) [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:to="us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestExpense" xlink:label="us-gaap_InterestExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InterestExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Gain on cash flow hedges</link:label>
    <link:label xlink:label="us-gaap_InterestExpense-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Interest expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InterestExpense" xlink:to="us-gaap_InterestExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LowerWillametteGroupMember" xlink:label="nwpx_LowerWillametteGroupMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_LowerWillametteGroupMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lower Willamette Group [Member]</link:label>
    <link:label xlink:label="nwpx_LowerWillametteGroupMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Refers to information regarding the Lower Willamette Group.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_LowerWillametteGroupMember" xlink:to="nwpx_LowerWillametteGroupMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Changes in operating assets and liabilities, net of acquired assets and assumed liabilities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisclosureTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DisclosureTextBlockAbstract</link:label>
    <link:label xlink:label="us-gaap_DisclosureTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Notes to Financial Statements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureTextBlockAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:label="us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Derivative Instruments and Hedging Activities Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:to="us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherNoncashIncomeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherNoncashIncomeExpense</link:label>
    <link:label xlink:label="us-gaap_OtherNoncashIncomeExpense-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Other, net</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherNoncashIncomeExpense" xlink:to="us-gaap_OtherNoncashIncomeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventory Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryDisclosureTextBlock" xlink:to="us-gaap_InventoryDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCurrencyTransactionGainLossRealized" xlink:label="us-gaap_ForeignCurrencyTransactionGainLossRealized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ForeignCurrencyTransactionGainLossRealized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ForeignCurrencyTransactionGainLossRealized</link:label>
    <link:label xlink:label="us-gaap_ForeignCurrencyTransactionGainLossRealized-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Realized Gain (Loss), Foreign Currency Transaction, before Tax</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ForeignCurrencyTransactionGainLossRealized" xlink:to="us-gaap_ForeignCurrencyTransactionGainLossRealized-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent" xlink:label="us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent</link:label>
    <link:label xlink:label="us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Assets for Plan Benefits, Defined Benefit Plan</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent" xlink:to="us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term lease liabilities, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Present value of lease liabilities, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiability" xlink:to="us-gaap_OperatingLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current portion of operating lease liabilities</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Current portion of lease liabilities, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiabilityCurrent" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityCurrent</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Current portion of lease liabilities, included in Accrued liabilities, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityCurrent" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Benefits [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:to="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term lease liabilities, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating leases, Right-of-use assets</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating lease right-of-use assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseRightOfUseAsset" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total lease payments, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeasePrincipalPayments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeasePrincipalPayments</link:label>
    <link:label xlink:label="us-gaap_FinanceLeasePrincipalPayments-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Payments on finance lease liabilities</link:label>
    <link:label xlink:label="us-gaap_FinanceLeasePrincipalPayments-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Financing cash flows from finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeasePrincipalPayments" xlink:to="us-gaap_FinanceLeasePrincipalPayments-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Amount representing interest, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Present value of lease liabilities, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiability" xlink:to="us-gaap_FinanceLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred income taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Thereafter</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2026, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2027, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths" xlink:label="us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths</link:label>
    <link:label xlink:label="us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Cash Flow Hedge Gain (Loss) to be Reclassified within 12 Months</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths" xlink:to="us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2028, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finance leases, net, included in Property and equipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseRightOfUseAsset" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Thereafter, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2025</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax</link:label>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Pension liability adjustment, net of income tax benefit of $482 and $592</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2026</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2027</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2024, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2028</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2025, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:to="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2024</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:label="us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Unrealized gain (loss) on cash flow hedges, net of income tax (expense) benefit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:to="us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock" xlink:label="us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Acquired Finite-Lived Intangible Assets by Major Class [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock" xlink:to="us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesDomain" xlink:label="us-gaap_ValuationAllowancesAndReservesDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ValuationAllowancesAndReservesDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ValuationAllowancesAndReservesDomain" xlink:to="us-gaap_ValuationAllowancesAndReservesDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:label="us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowance, Deferred Tax Asset [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:to="us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign Currency Transactions and Translations Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:to="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensation</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based compensation expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensation" xlink:to="us-gaap_ShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherAssetsNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherAssetsNoncurrent" xlink:to="us-gaap_OtherAssetsNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeLeasesPolicyTextBlock" xlink:label="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeLeasesPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Leases [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeLeasesPolicyTextBlock" xlink:to="us-gaap_LesseeLeasesPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:label="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ValuationAllowancesAndReservesTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:to="us-gaap_ValuationAllowancesAndReservesTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationsPolicy" xlink:label="us-gaap_BusinessCombinationsPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationsPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Combinations Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationsPolicy" xlink:to="us-gaap_BusinessCombinationsPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetUsefulLife</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Finite-Lived Intangible Asset, Useful Life (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerSharePolicyTextBlock" xlink:label="us-gaap_EarningsPerSharePolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerSharePolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Earnings Per Share, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerSharePolicyTextBlock" xlink:to="us-gaap_EarningsPerSharePolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DefinedContributionPlanMember" xlink:label="nwpx_DefinedContributionPlanMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_DefinedContributionPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Defined Contribution Plan [Member]</link:label>
    <link:label xlink:label="nwpx_DefinedContributionPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Information pertaining to the Defined Contribution Plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_DefinedContributionPlanMember" xlink:to="nwpx_DefinedContributionPlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:label="nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NonqualifiedRetirementSavingsPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Non-qualified Retirement Savings Plan [Member]</link:label>
    <link:label xlink:label="nwpx_NonqualifiedRetirementSavingsPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Information pertaining to the Non-qualified Retirement Savings Plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:to="nwpx_NonqualifiedRetirementSavingsPlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PerformanceShareAwardTargetLevelPercentage" xlink:label="nwpx_PerformanceShareAwardTargetLevelPercentage" xlink:type="locator"/>
    <link:label xlink:label="nwpx_PerformanceShareAwardTargetLevelPercentage-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_PerformanceShareAwardTargetLevelPercentage</link:label>
    <link:label xlink:label="nwpx_PerformanceShareAwardTargetLevelPercentage-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Performance Share Award Target Level, Percentage</link:label>
    <link:label xlink:label="nwpx_PerformanceShareAwardTargetLevelPercentage-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the target level percentage for performance share awards.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_PerformanceShareAwardTargetLevelPercentage" xlink:to="nwpx_PerformanceShareAwardTargetLevelPercentage-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Comprehensive Income, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:to="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxPolicyTextBlock" xlink:label="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Tax, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxPolicyTextBlock" xlink:to="us-gaap_IncomeTaxPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Total financial assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsFairValueDisclosure" xlink:to="us-gaap_AssetsFairValueDisclosure-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:to="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AssetsCurrent</link:label>
    <link:label xlink:label="us-gaap_AssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_AssetsCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:label="us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:to="us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:label="us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockholdersEquityNoteDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equity [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:to="us-gaap_StockholdersEquityNoteDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionAndOtherPostretirementPlansPolicy" xlink:label="us-gaap_PensionAndOtherPostretirementPlansPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PensionAndOtherPostretirementPlansPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Pension and Other Postretirement Plans, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PensionAndOtherPostretirementPlansPolicy" xlink:to="us-gaap_PensionAndOtherPostretirementPlansPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, $.01 par value, 15,000,000 shares authorized, 9,985,580 and 9,927,360 shares issued and outstanding as of December 31, 2023 and 2022, respectively</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockValue" xlink:to="us-gaap_CommonStockValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Adjustments to reconcile net income to net cash provided by (used in) operating activities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesAuthorized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, shares authorized (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesAuthorized" xlink:to="us-gaap_CommonStockSharesAuthorized-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesIssued-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, shares issued (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesIssued" xlink:to="us-gaap_CommonStockSharesIssued-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockParOrStatedValuePerShare-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, par value (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_CommonStockParOrStatedValuePerShare-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Common Stock, Par or Stated Value Per Share (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockParOrStatedValuePerShare" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquityPolicyTextBlock" xlink:label="us-gaap_StockholdersEquityPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockholdersEquityPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stockholders' Equity, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockholdersEquityPolicyTextBlock" xlink:to="us-gaap_StockholdersEquityPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:label="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CommonStockCapitalSharesReservedForFutureIssuance</link:label>
    <link:label xlink:label="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Common Stock, Capital Shares Reserved for Future Issuance (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:to="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsValuationAllowance</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Valuation allowance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:label xlink:label="srt_RangeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statistical Measurement [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RangeMember" xlink:to="srt_RangeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeasePayments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingLeasePayments</link:label>
    <link:label xlink:label="us-gaap_OperatingLeasePayments-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Operating cash flows from operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeasePayments" xlink:to="us-gaap_OperatingLeasePayments-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:label xlink:label="srt_MaximumMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Maximum [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_MaximumMember" xlink:to="srt_MaximumMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:label="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Noncash investing and financing activities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:label xlink:label="srt_MinimumMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Minimum [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_MinimumMember" xlink:to="srt_MinimumMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsNet</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Deferred Tax Assets, Net of Valuation Allowance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_RangeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statistical Measurement [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RangeAxis" xlink:to="srt_RangeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseInterestPaymentOnLiability</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Operating cash flows from finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:to="us-gaap_FinanceLeaseInterestPaymentOnLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetNetCurrent" xlink:label="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ContractWithCustomerAssetNetCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Contract assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:to="us-gaap_ContractWithCustomerAssetNetCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, $.01 par value, 10,000,000 shares authorized, none issued or outstanding</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockValue" xlink:to="us-gaap_PreferredStockValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockSharesIssued-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, shares issued (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockSharesIssued" xlink:to="us-gaap_PreferredStockSharesIssued-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:to="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InterestPaidNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash paid during the period for interest, net of amounts capitalized</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InterestPaidNet" xlink:to="us-gaap_InterestPaidNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsOther-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsOther</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsOther-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsOther" xlink:to="us-gaap_DeferredTaxAssetsOther-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_StatementGeographicalAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Geographical [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_StatementGeographicalAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_SegmentGeographicalDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Geographical [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_SegmentGeographicalDomain" xlink:to="srt_SegmentGeographicalDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsGross" xlink:label="us-gaap_DeferredTaxAssetsGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsGross</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsGross-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Deferred Tax Assets, Gross</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsGross" xlink:to="us-gaap_DeferredTaxAssetsGross-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockSharesAuthorized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, shares authorized (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockSharesAuthorized" xlink:to="us-gaap_PreferredStockSharesAuthorized-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:to="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:label="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:label xlink:label="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Depreciation and finance lease amortization</link:label>
    <link:label xlink:label="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives and amount of amortization expense attributable to right-of-use asset from finance lease.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:to="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredIncomeTaxLiabilities</link:label>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilities-label" xlink:role="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="resource" xml:lang="en-US">Deferred Tax Liabilities, Gross</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredIncomeTaxLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventories</link:label>
    <link:label xlink:label="us-gaap_InventoryNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total inventories</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, par value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:to="us-gaap_PreferredStockParOrStatedValuePerShare-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net sales</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LesseeLiabilityMaturityTableTextBlock" xlink:label="nwpx_LesseeLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_LesseeLiabilityMaturityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Liability, Maturity [Table Text Block]</link:label>
    <link:label xlink:label="nwpx_LesseeLiabilityMaturityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of undiscounted cash flows of lessee's operating and finace lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating and finance lease liability recognized in statement of financial position.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_LesseeLiabilityMaturityTableTextBlock" xlink:to="nwpx_LesseeLiabilityMaturityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueInputsLevel3Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Inputs, Level 3 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueInputsLevel3Member" xlink:to="us-gaap_FairValueInputsLevel3Member-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value Hierarchy and NAV [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MajorCustomersAxis" xlink:label="srt_MajorCustomersAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_MajorCustomersAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Customer [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_MajorCustomersAxis" xlink:to="srt_MajorCustomersAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsInventory-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsInventory</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsInventory-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Inventories</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsInventory" xlink:to="us-gaap_DeferredTaxAssetsInventory-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_NameOfMajorCustomerDomain" xlink:label="srt_NameOfMajorCustomerDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_NameOfMajorCustomerDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Customer [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_NameOfMajorCustomerDomain" xlink:to="srt_NameOfMajorCustomerDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseLiability" xlink:label="nwpx_LeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="nwpx_LeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_LeaseLiability</link:label>
    <link:label xlink:label="nwpx_LeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total lease liabilities</link:label>
    <link:label xlink:label="nwpx_LeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Present value of lessee's discounted obligation for lease payments from operating and finance lease.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_LeaseLiability" xlink:to="nwpx_LeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueInputsLevel1Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Inputs, Level 1 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueInputsLevel1Member" xlink:to="us-gaap_FairValueInputsLevel1Member-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueInputsLevel2Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Inputs, Level 2 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueInputsLevel2Member" xlink:to="us-gaap_FairValueInputsLevel2Member-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" xlink:label="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Information Related to Operating and Finance Leases [Table Text Block]</link:label>
    <link:label xlink:label="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of other information related to operating and finance leases.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" xlink:to="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" xlink:label="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease Terms and Discount Rates for Lease Liabilities [Table Text Block]</link:label>
    <link:label xlink:label="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of lessee's lease terms and discount rates for lease liabilities.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" xlink:to="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value Hierarchy and NAV [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueByFairValueHierarchyLevelAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:label="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit</link:label>
    <link:label xlink:label="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total deferred income tax expense (benefit)</link:label>
    <link:label xlink:label="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of deferred state, local, federal and foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:to="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" xlink:label="us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property and equipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" xlink:to="us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromIncomeTaxRefunds" xlink:label="us-gaap_ProceedsFromIncomeTaxRefunds" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromIncomeTaxRefunds-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from Income Tax Refunds</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromIncomeTaxRefunds" xlink:to="us-gaap_ProceedsFromIncomeTaxRefunds-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReceivablesNetCurrent" xlink:label="us-gaap_ReceivablesNetCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReceivablesNetCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trade and other receivables, less allowance for doubtful accounts of $121 and $369</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReceivablesNetCurrent" xlink:to="us-gaap_ReceivablesNetCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PropertyPlantAndEquipmentUsefulLife</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment, Useful Life (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:to="us-gaap_PropertyPlantAndEquipmentUsefulLife-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConstructionInProgressMember" xlink:label="us-gaap_ConstructionInProgressMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConstructionInProgressMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Construction in Progress [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConstructionInProgressMember" xlink:to="us-gaap_ConstructionInProgressMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LesseeLeaseDisclosureTextBlock" xlink:label="nwpx_LesseeLeaseDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_LesseeLeaseDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Lease, Disclosure [Text Block]</link:label>
    <link:label xlink:label="nwpx_LesseeLeaseDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The entire disclosure for leases of lessee.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_LesseeLeaseDisclosureTextBlock" xlink:to="nwpx_LesseeLeaseDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash flows from operating activities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock" xlink:label="us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Segment Reporting Information, by Segment [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock" xlink:to="us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRecognitionPolicyTextBlock" xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:to="us-gaap_RevenueRecognitionPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementLineItems-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement [Line Items]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementLineItems-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:label="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accumulated Defined Benefit Plans Adjustment Attributable to Parent [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:to="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accrued employee benefits</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NumberOfOperatingSegments" xlink:label="us-gaap_NumberOfOperatingSegments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NumberOfOperatingSegments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NumberOfOperatingSegments</link:label>
    <link:label xlink:label="us-gaap_NumberOfOperatingSegments-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Number of Operating Segments</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NumberOfOperatingSegments" xlink:to="us-gaap_NumberOfOperatingSegments-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:label="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:to="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredCompensationPlanAssets" xlink:label="us-gaap_DeferredCompensationPlanAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredCompensationPlanAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred compensation plan</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredCompensationPlanAssets" xlink:to="us-gaap_DeferredCompensationPlanAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BuildingMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Building [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BuildingMember" xlink:to="us-gaap_BuildingMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">AOCI Attributable to Parent [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additional paid-in-capital</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockholdersEquityAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stockholders&#8217; equity:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquityAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LandImprovementsMember" xlink:label="us-gaap_LandImprovementsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LandImprovementsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Land Improvements [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LandImprovementsMember" xlink:to="us-gaap_LandImprovementsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseholdImprovementsMember" xlink:label="us-gaap_LeaseholdImprovementsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseholdImprovementsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Leasehold Improvements [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseholdImprovementsMember" xlink:to="us-gaap_LeaseholdImprovementsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherNonoperatingIncomeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other income</link:label>
    <link:label xlink:label="us-gaap_OtherNonoperatingIncomeExpense-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Non-service cost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherNonoperatingIncomeExpense" xlink:to="us-gaap_OtherNonoperatingIncomeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-Lived Tangible Asset [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredCompensationPlanMember" xlink:label="nwpx_DeferredCompensationPlanMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_DeferredCompensationPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred Compensation Plan [Member]</link:label>
    <link:label xlink:label="nwpx_DeferredCompensationPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents deferred compensation plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_DeferredCompensationPlanMember" xlink:to="nwpx_DeferredCompensationPlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SegmentReportingDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Segment Reporting Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SegmentReportingDisclosureTextBlock" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-Lived Tangible Asset [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsTaxCreditCarryforwards</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Tax credit carryforwards</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards" xlink:to="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsOperatingLossCarryforwards</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Net operating loss carryforwards</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsCurrentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current assets:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueDisclosuresTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value Disclosures [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueDisclosuresTextBlock" xlink:to="us-gaap_FairValueDisclosuresTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations</link:label>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents, beginning of period</link:label>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents, end of period</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryPolicyTextBlock" xlink:label="us-gaap_InventoryPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventory, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryPolicyTextBlock" xlink:to="us-gaap_InventoryPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect</link:label>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Change in cash and cash equivalents</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInFinancingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash provided by (used in) financing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Liabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_Liabilities</link:label>
    <link:label xlink:label="us-gaap_Liabilities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_Liabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommitmentsAndContingencies" xlink:label="us-gaap_CommitmentsAndContingencies" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommitmentsAndContingencies-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Commitments and contingencies (Note 15)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommitmentsAndContingencies" xlink:to="us-gaap_CommitmentsAndContingencies-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SubsidiarySaleOfStockAxis" xlink:label="us-gaap_SubsidiarySaleOfStockAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SubsidiarySaleOfStockAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Sale of Stock [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SubsidiarySaleOfStockAxis" xlink:to="us-gaap_SubsidiarySaleOfStockAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_DirectorMember" xlink:label="srt_DirectorMember" xlink:type="locator"/>
    <link:label xlink:label="srt_DirectorMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Director [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_DirectorMember" xlink:to="srt_DirectorMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SaleOfStockNameOfTransactionDomain" xlink:label="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SaleOfStockNameOfTransactionDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Sale of Stock [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:to="us-gaap_SaleOfStockNameOfTransactionDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingIncomeLoss</link:label>
    <link:label xlink:label="us-gaap_OperatingIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Operating income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_OperatingIncomeLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInOperatingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash provided by (used in) operating activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:label="us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ContractWithCustomerLiabilityRevenueRecognized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue recognized</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:to="us-gaap_ContractWithCustomerLiabilityRevenueRecognized-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInInvestingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash used in investing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Prepaid expenses and other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilities</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Net deferred income tax liabilities</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="resource" xml:lang="en-US">Net deferred income tax liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Intangible assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GrossProfit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Gross profit</link:label>
    <link:label xlink:label="us-gaap_GrossProfit-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Gross profit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_GrossProfit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CostOfGoodsAndServicesSold-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cost of sales</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CostOfGoodsAndServicesSold" xlink:to="us-gaap_CostOfGoodsAndServicesSold-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_CounterpartyNameAxis" xlink:label="srt_CounterpartyNameAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_CounterpartyNameAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Counterparty Name [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_CounterpartyNameAxis" xlink:to="srt_CounterpartyNameAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RepurchaseAgreementCounterpartyNameDomain" xlink:label="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_RepurchaseAgreementCounterpartyNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Counterparty Name [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:to="srt_RepurchaseAgreementCounterpartyNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativesPolicyTextBlock" xlink:label="us-gaap_DerivativesPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DerivativesPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Derivatives, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DerivativesPolicyTextBlock" xlink:to="us-gaap_DerivativesPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredIncomeTaxLiabilitiesNet</link:label>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Deferred income taxes</link:label>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Deferred income taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_ConsolidationItemsDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidation Items [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ConsolidationItemsDomain" xlink:to="srt_ConsolidationItemsDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiability" xlink:label="us-gaap_ContractWithCustomerLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ContractWithCustomerLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ContractWithCustomerLiability</link:label>
    <link:label xlink:label="us-gaap_ContractWithCustomerLiability-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balance, beginning of year</link:label>
    <link:label xlink:label="us-gaap_ContractWithCustomerLiability-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balance, end of year</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ContractWithCustomerLiability" xlink:to="us-gaap_ContractWithCustomerLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeLiabilities" xlink:label="us-gaap_DerivativeLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DerivativeLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DerivativeLiabilities</link:label>
    <link:label xlink:label="us-gaap_DerivativeLiabilities-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Foreign currency forward contracts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DerivativeLiabilities" xlink:to="us-gaap_DerivativeLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_ConsolidationItemsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidation Items [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:label="us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromPaymentsForOtherFinancingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other financing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:to="us-gaap_ProceedsFromPaymentsForOtherFinancingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskCreditRisk" xlink:label="us-gaap_ConcentrationRiskCreditRisk" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConcentrationRiskCreditRisk-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Concentration Risk, Credit Risk, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConcentrationRiskCreditRisk" xlink:to="us-gaap_ConcentrationRiskCreditRisk-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation</link:label>
    <link:label xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Tax withholdings related to net share settlements of restricted stock and performance share awards</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Property and equipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesPrepaidExpenses" xlink:label="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilitiesPrepaidExpenses</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Prepaid expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses" xlink:to="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LettersOfCreditOutstandingAmount" xlink:label="us-gaap_LettersOfCreditOutstandingAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LettersOfCreditOutstandingAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LettersOfCreditOutstandingAmount</link:label>
    <link:label xlink:label="us-gaap_LettersOfCreditOutstandingAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Letters of Credit Outstanding, Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LettersOfCreditOutstandingAmount" xlink:to="us-gaap_LettersOfCreditOutstandingAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent" xlink:label="us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent</link:label>
    <link:label xlink:label="us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Workers' Compensation Liability</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent" xlink:to="us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsForRepurchaseOfCommonStock</link:label>
    <link:label xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchase of common stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetainedEarningsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retained Earnings [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetainedEarningsMember" xlink:to="us-gaap_RetainedEarningsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfInactiveStockIncentivePlans" xlink:label="nwpx_NumberOfInactiveStockIncentivePlans" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NumberOfInactiveStockIncentivePlans-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_NumberOfInactiveStockIncentivePlans</link:label>
    <link:label xlink:label="nwpx_NumberOfInactiveStockIncentivePlans-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Number Of Inactive Stock Incentive Plans</link:label>
    <link:label xlink:label="nwpx_NumberOfInactiveStockIncentivePlans-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The number of inactive stock incentive plans.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NumberOfInactiveStockIncentivePlans" xlink:to="nwpx_NumberOfInactiveStockIncentivePlans-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Title of Individual [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CurrentStateAndLocalTaxExpenseBenefit</link:label>
    <link:label xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">State</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualAxis" xlink:label="srt_TitleOfIndividualAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_TitleOfIndividualAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Title of Individual [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit</link:label>
    <link:label xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">State</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:label="us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1</link:label>
    <link:label xlink:label="us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Stock Repurchase Program, Remaining Authorized Repurchase Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:to="us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CurrentForeignTaxExpenseBenefit</link:label>
    <link:label xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Foreign</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredForeignIncomeTaxExpenseBenefit</link:label>
    <link:label xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Foreign</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdditionalPaidInCapitalMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additional Paid-in Capital [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdditionalPaidInCapitalMember" xlink:to="us-gaap_AdditionalPaidInCapitalMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramDomain" xlink:label="us-gaap_ShareRepurchaseProgramDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareRepurchaseProgramDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share Repurchase Program [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareRepurchaseProgramDomain" xlink:to="us-gaap_ShareRepurchaseProgramDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CurrentFederalTaxExpenseBenefit</link:label>
    <link:label xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Federal</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common Stock [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockMember" xlink:to="us-gaap_CommonStockMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:label="us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockRepurchaseProgramAuthorizedAmount1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockRepurchaseProgramAuthorizedAmount1</link:label>
    <link:label xlink:label="us-gaap_StockRepurchaseProgramAuthorizedAmount1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Stock Repurchase Program, Authorized Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:to="us-gaap_StockRepurchaseProgramAuthorizedAmount1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredFederalIncomeTaxExpenseBenefit</link:label>
    <link:label xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Federal</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementEquityComponentsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equity Components [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_StatementEquityComponentsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramAxis" xlink:label="us-gaap_ShareRepurchaseProgramAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareRepurchaseProgramAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share Repurchase Program [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareRepurchaseProgramAxis" xlink:to="us-gaap_ShareRepurchaseProgramAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EquityComponentDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equity Component [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_EquityComponentDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CurrentIncomeTaxExpenseBenefit</link:label>
    <link:label xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total current income tax expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteDomain" xlink:label="us-gaap_EnvironmentalRemediationSiteDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EnvironmentalRemediationSiteDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Environmental Remediation Site [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EnvironmentalRemediationSiteDomain" xlink:to="us-gaap_EnvironmentalRemediationSiteDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:label="us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueRemainingPerformanceObligationPercentage-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RevenueRemainingPerformanceObligationPercentage</link:label>
    <link:label xlink:label="us-gaap_RevenueRemainingPerformanceObligationPercentage-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Revenue, Remaining Performance Obligation, Percentage</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:to="us-gaap_RevenueRemainingPerformanceObligationPercentage-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:label="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1</link:label>
    <link:label xlink:label="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:to="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherLiabilitiesMember" xlink:label="us-gaap_OtherLiabilitiesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherLiabilitiesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Liabilities [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherLiabilitiesMember" xlink:to="us-gaap_OtherLiabilitiesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligation" xlink:label="us-gaap_RevenueRemainingPerformanceObligation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueRemainingPerformanceObligation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RevenueRemainingPerformanceObligation</link:label>
    <link:label xlink:label="us-gaap_RevenueRemainingPerformanceObligation-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Revenue, Remaining Performance Obligation, Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueRemainingPerformanceObligation" xlink:to="us-gaap_RevenueRemainingPerformanceObligation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:label="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:to="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherAssetsMember" xlink:label="us-gaap_OtherAssetsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherAssetsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Assets [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherAssetsMember" xlink:to="us-gaap_OtherAssetsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteAxis" xlink:label="us-gaap_EnvironmentalRemediationSiteAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EnvironmentalRemediationSiteAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Environmental Remediation Site [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EnvironmentalRemediationSiteAxis" xlink:to="us-gaap_EnvironmentalRemediationSiteAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</link:label>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Income before income taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">United States</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Reclassification out of Accumulated Other Comprehensive Income [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Reclassification out of Accumulated Other Comprehensive Income [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_IcfrAuditorAttestationFlag" xlink:label="dei_IcfrAuditorAttestationFlag" xlink:type="locator"/>
    <link:label xlink:label="dei_IcfrAuditorAttestationFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ICFR Auditor Attestation Flag</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_IcfrAuditorAttestationFlag" xlink:to="dei_IcfrAuditorAttestationFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Reclassification out of Accumulated Other Comprehensive Income [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:label="us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNoteTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Comprehensive Income (Loss) Note [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:to="us-gaap_ComprehensiveIncomeNoteTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCredit" xlink:label="us-gaap_LineOfCredit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCredit</link:label>
    <link:label xlink:label="us-gaap_LineOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Long-Term Line of Credit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCredit" xlink:to="us-gaap_LineOfCredit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Accumulated Other Comprehensive Income (Loss) [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:to="us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Reclassification out of Accumulated Other Comprehensive Income [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StateAndLocalJurisdictionMember" xlink:label="us-gaap_StateAndLocalJurisdictionMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StateAndLocalJurisdictionMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">State and Local Jurisdiction [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StateAndLocalJurisdictionMember" xlink:to="us-gaap_StateAndLocalJurisdictionMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Timing of Transfer of Good or Service [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TransferredAtPointInTimeMember" xlink:label="us-gaap_TransferredAtPointInTimeMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TransferredAtPointInTimeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Transferred at Point in Time [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TransferredAtPointInTimeMember" xlink:to="us-gaap_TransferredAtPointInTimeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TransferredOverTimeMember" xlink:label="us-gaap_TransferredOverTimeMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TransferredOverTimeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Transferred over Time [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TransferredOverTimeMember" xlink:to="us-gaap_TransferredOverTimeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityAxis" xlink:label="us-gaap_IncomeTaxAuthorityAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxAuthorityAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Tax Authority [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_IncomeTaxAuthorityAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityDomain" xlink:label="us-gaap_IncomeTaxAuthorityDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxAuthorityDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Tax Authority [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxAuthorityDomain" xlink:to="us-gaap_IncomeTaxAuthorityDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Disaggregation of Revenue [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DomesticCountryMember" xlink:label="us-gaap_DomesticCountryMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DomesticCountryMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Domestic Tax Authority [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DomesticCountryMember" xlink:to="us-gaap_DomesticCountryMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCountryMember" xlink:label="us-gaap_ForeignCountryMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ForeignCountryMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign Tax Authority [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ForeignCountryMember" xlink:to="us-gaap_ForeignCountryMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Timing of Transfer of Good or Service [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RepaymentsOfLongTermDebt-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RepaymentsOfLongTermDebt</link:label>
    <link:label xlink:label="us-gaap_RepaymentsOfLongTermDebt-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Payments on other debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RepaymentsOfLongTermDebt" xlink:to="us-gaap_RepaymentsOfLongTermDebt-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue from Contract with Customer [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:to="us-gaap_RevenueFromContractWithCustomerTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentAnnualReport" xlink:label="dei_DocumentAnnualReport" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentAnnualReport-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Annual Report</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentAnnualReport" xlink:to="dei_DocumentAnnualReport-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_MachineryAndEquipmentMember" xlink:label="us-gaap_MachineryAndEquipmentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MachineryAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Machinery and Equipment [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MachineryAndEquipmentMember" xlink:to="us-gaap_MachineryAndEquipmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" xlink:label="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule Of Inventory Current And Non Current [Table Text Block]</link:label>
    <link:label xlink:label="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process. Includes current and non-current inventory balances.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" xlink:to="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and Cash Equivalents, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:to="us-gaap_CashAndCashEquivalentsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BalanceSheetLocationAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Balance Sheet Location [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BalanceSheetLocationDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Balance Sheet Location [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="us-gaap_BalanceSheetLocationDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReceivablesPolicyTextBlock" xlink:label="us-gaap_ReceivablesPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReceivablesPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Receivable [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReceivablesPolicyTextBlock" xlink:to="us-gaap_ReceivablesPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityIncorporationStateCountryCode-label" 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:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityIncorporationStateCountryCode" xlink:to="dei_EntityIncorporationStateCountryCode-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefits-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_UnrecognizedTaxBenefits</link:label>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefits-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Unrecognized income tax benefits, beginning of year</link:label>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefits-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Unrecognized income tax benefits, end of year</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefits" xlink:to="us-gaap_UnrecognizedTaxBenefits-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountingPoliciesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Policies [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Significant Accounting Policies [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:to="us-gaap_SignificantAccountingPoliciesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OpenTaxYear" xlink:label="us-gaap_OpenTaxYear" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OpenTaxYear-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OpenTaxYear</link:label>
    <link:label xlink:label="us-gaap_OpenTaxYear-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Open Tax Year</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OpenTaxYear" xlink:to="us-gaap_OpenTaxYear-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentTransitionReport-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Transition Report</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentTransitionReport" xlink:to="dei_DocumentTransitionReport-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFinStmtErrorCorrectionFlag" xlink:label="dei_DocumentFinStmtErrorCorrectionFlag" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentFinStmtErrorCorrectionFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Financial Statement Error Correction [Flag]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFinStmtErrorCorrectionFlag" xlink:to="dei_DocumentFinStmtErrorCorrectionFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EstimatedCostOfEPASelectedRemedy" xlink:label="nwpx_EstimatedCostOfEPASelectedRemedy" xlink:type="locator"/>
    <link:label xlink:label="nwpx_EstimatedCostOfEPASelectedRemedy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_EstimatedCostOfEPASelectedRemedy</link:label>
    <link:label xlink:label="nwpx_EstimatedCostOfEPASelectedRemedy-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Estimated Cost of EPA Selected Remedy</link:label>
    <link:label xlink:label="nwpx_EstimatedCostOfEPASelectedRemedy-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The estimated cost of the remedy selected by EPA.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_EstimatedCostOfEPASelectedRemedy" xlink:to="nwpx_EstimatedCostOfEPASelectedRemedy-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EstimatedTimeToCompleteSelectedEPARemedy" xlink:label="nwpx_EstimatedTimeToCompleteSelectedEPARemedy" xlink:type="locator"/>
    <link:label xlink:label="nwpx_EstimatedTimeToCompleteSelectedEPARemedy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_EstimatedTimeToCompleteSelectedEPARemedy</link:label>
    <link:label xlink:label="nwpx_EstimatedTimeToCompleteSelectedEPARemedy-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Estimated Time to Complete Selected EPA Remedy (Year)</link:label>
    <link:label xlink:label="nwpx_EstimatedTimeToCompleteSelectedEPARemedy-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The estimated amount of time to complete the selected EPA remedy.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_EstimatedTimeToCompleteSelectedEPARemedy" xlink:to="nwpx_EstimatedTimeToCompleteSelectedEPARemedy-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShortTermBorrowings" xlink:label="us-gaap_ShortTermBorrowings" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShortTermBorrowings-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShortTermBorrowings</link:label>
    <link:label xlink:label="us-gaap_ShortTermBorrowings-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Short-Term Debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShortTermBorrowings" xlink:to="us-gaap_ShortTermBorrowings-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SellingGeneralAndAdministrativeExpensesMember" xlink:label="us-gaap_SellingGeneralAndAdministrativeExpensesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SellingGeneralAndAdministrativeExpensesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Selling, General and Administrative Expenses [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SellingGeneralAndAdministrativeExpensesMember" xlink:to="us-gaap_SellingGeneralAndAdministrativeExpensesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityInteractiveDataCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Interactive Data Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityInteractiveDataCurrent" xlink:to="dei_EntityInteractiveDataCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfPotentiallyResponsibleParties" xlink:label="nwpx_NumberOfPotentiallyResponsibleParties" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NumberOfPotentiallyResponsibleParties-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_NumberOfPotentiallyResponsibleParties</link:label>
    <link:label xlink:label="nwpx_NumberOfPotentiallyResponsibleParties-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Number Of Potentially Responsible Parties</link:label>
    <link:label xlink:label="nwpx_NumberOfPotentiallyResponsibleParties-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Number of potentially responsible parties for Portland Harbor Superfund site.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NumberOfPotentiallyResponsibleParties" xlink:to="nwpx_NumberOfPotentiallyResponsibleParties-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:label="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Portland Harbor Natural Resources Trustee Council [Member]</link:label>
    <link:label xlink:label="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The name or description of the loss contingency by its nature.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:to="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfActiveStockIncentivePlans" xlink:label="nwpx_NumberOfActiveStockIncentivePlans" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NumberOfActiveStockIncentivePlans-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_NumberOfActiveStockIncentivePlans</link:label>
    <link:label xlink:label="nwpx_NumberOfActiveStockIncentivePlans-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Number Of Active Stock Incentive Plans</link:label>
    <link:label xlink:label="nwpx_NumberOfActiveStockIncentivePlans-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The number of active stock incentive plans.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NumberOfActiveStockIncentivePlans" xlink:to="nwpx_NumberOfActiveStockIncentivePlans-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" xlink:label="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" xlink:type="locator"/>
    <link:label xlink:label="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized</link:label>
    <link:label xlink:label="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Interest Expense, Debt and Finance Leases, Net of Amounts Capitalized</link:label>
    <link:label xlink:label="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the amount of interest expense recorded during the period from debt and finance leases, net of amounts capitalized.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" xlink:to="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestExpenseMember" xlink:label="us-gaap_InterestExpenseMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InterestExpenseMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Interest Expense [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InterestExpenseMember" xlink:to="us-gaap_InterestExpenseMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Increases for positions taken in prior years</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:label xlink:label="dei_SecurityExchangeName-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Security Exchange Name</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_SecurityExchangeName" xlink:to="dei_SecurityExchangeName-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" xlink:label="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance</link:label>
    <link:label xlink:label="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share Based Compensation Arrangement By Share Based Payment Award Equity Instruments Other Than Options Nonvested Number At Target Level Of Performance (in shares)</link:label>
    <link:label xlink:label="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The number of non-vested equity-based payment instruments at a target level of performance, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" xlink:to="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PerformanceAwardsIssuedMultiplier" xlink:label="nwpx_PerformanceAwardsIssuedMultiplier" xlink:type="locator"/>
    <link:label xlink:label="nwpx_PerformanceAwardsIssuedMultiplier-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_PerformanceAwardsIssuedMultiplier</link:label>
    <link:label xlink:label="nwpx_PerformanceAwardsIssuedMultiplier-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Performance Awards Issued Multiplier</link:label>
    <link:label xlink:label="nwpx_PerformanceAwardsIssuedMultiplier-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The percentage of the performance awards issued multiplier.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_PerformanceAwardsIssuedMultiplier" xlink:to="nwpx_PerformanceAwardsIssuedMultiplier-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:label xlink:label="dei_Security12bTitle-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Title of 12(b) Security</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_Security12bTitle" xlink:to="dei_Security12bTitle-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:label="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Restricted Stock Units and Performance Stock Awards [Member]</link:label>
    <link:label xlink:label="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The type or description of the award.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:to="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued</link:label>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Unrecognized Tax Benefits, Income Tax Penalties Accrued</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromIssuanceOfLongTermDebt-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Borrowings on other debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:to="us-gaap_ProceedsFromIssuanceOfLongTermDebt-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CostOfSalesMember" xlink:label="us-gaap_CostOfSalesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CostOfSalesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cost of Sales [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CostOfSalesMember" xlink:to="us-gaap_CostOfSalesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesMember" xlink:label="us-gaap_SalesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SalesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Sales [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SalesMember" xlink:to="us-gaap_SalesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed" xlink:label="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed" xlink:type="locator"/>
    <link:label xlink:label="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed</link:label>
    <link:label xlink:label="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Common Stock, Capital Shares Reserved for Future Issuance, Percentage Vesting of Outstanding PSAs Assumed</link:label>
    <link:label xlink:label="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the vesting percentage of PSAs used as an assumption to determine the number of capital shares reserved for future issuance.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed" xlink:to="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesBalance" xlink:label="us-gaap_ValuationAllowancesAndReservesBalance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ValuationAllowancesAndReservesBalance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ValuationAllowancesAndReservesBalance</link:label>
    <link:label xlink:label="us-gaap_ValuationAllowancesAndReservesBalance-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balance at Beginning of Period</link:label>
    <link:label xlink:label="us-gaap_ValuationAllowancesAndReservesBalance-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balance at End of Period</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ValuationAllowancesAndReservesBalance" xlink:to="us-gaap_ValuationAllowancesAndReservesBalance-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:label="us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Charged to Profit and Loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:to="us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementLocationAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Statement Location [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesDeductions" xlink:label="us-gaap_ValuationAllowancesAndReservesDeductions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ValuationAllowancesAndReservesDeductions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ValuationAllowancesAndReservesDeductions</link:label>
    <link:label xlink:label="us-gaap_ValuationAllowancesAndReservesDeductions-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Deduction from Reserves</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ValuationAllowancesAndReservesDeductions" xlink:to="us-gaap_ValuationAllowancesAndReservesDeductions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementLocationDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Statement Location [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_IncomeStatementLocationDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditorName" xlink:label="dei_AuditorName" xlink:type="locator"/>
    <link:label xlink:label="dei_AuditorName-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Auditor Name</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AuditorName" xlink:to="dei_AuditorName-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditorFirmId" xlink:label="dei_AuditorFirmId" xlink:type="locator"/>
    <link:label xlink:label="dei_AuditorFirmId-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Auditor Firm ID</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AuditorFirmId" xlink:to="dei_AuditorFirmId-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditorLocation" xlink:label="dei_AuditorLocation" xlink:type="locator"/>
    <link:label xlink:label="dei_AuditorLocation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Auditor Location</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AuditorLocation" xlink:to="dei_AuditorLocation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WorkersCompensationLiabilityNoncurrent" xlink:label="us-gaap_WorkersCompensationLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WorkersCompensationLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_WorkersCompensationLiabilityNoncurrent</link:label>
    <link:label xlink:label="us-gaap_WorkersCompensationLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Workers' Compensation Liability, Noncurrent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WorkersCompensationLiabilityNoncurrent" xlink:to="us-gaap_WorkersCompensationLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementBusinessSegmentsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Segments [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_StatementBusinessSegmentsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SegmentDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Segments [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SegmentDomain" xlink:to="us-gaap_SegmentDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:label="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Effect of potentially dilutive common shares (1) (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:to="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TaxCreditCarryforwardAmount" xlink:label="us-gaap_TaxCreditCarryforwardAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TaxCreditCarryforwardAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_TaxCreditCarryforwardAmount</link:label>
    <link:label xlink:label="us-gaap_TaxCreditCarryforwardAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Tax Credit Carryforward, Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TaxCreditCarryforwardAmount" xlink:to="us-gaap_TaxCreditCarryforwardAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_MaximumSeniorLeverageRatioRequirement" xlink:label="nwpx_MaximumSeniorLeverageRatioRequirement" xlink:type="locator"/>
    <link:label xlink:label="nwpx_MaximumSeniorLeverageRatioRequirement-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_MaximumSeniorLeverageRatioRequirement</link:label>
    <link:label xlink:label="nwpx_MaximumSeniorLeverageRatioRequirement-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Maximum Senior Leverage Ratio Requirement</link:label>
    <link:label xlink:label="nwpx_MaximumSeniorLeverageRatioRequirement-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The maximum senior leverage ratio requirement.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_MaximumSeniorLeverageRatioRequirement" xlink:to="nwpx_MaximumSeniorLeverageRatioRequirement-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Finance Lease, Right-of-Use Asset, Accumulated Amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:label="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount</link:label>
    <link:label xlink:label="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:to="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RepaymentsOfLinesOfCredit" xlink:label="us-gaap_RepaymentsOfLinesOfCredit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RepaymentsOfLinesOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RepaymentsOfLinesOfCredit</link:label>
    <link:label xlink:label="us-gaap_RepaymentsOfLinesOfCredit-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repayments on line of credit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RepaymentsOfLinesOfCredit" xlink:to="us-gaap_RepaymentsOfLinesOfCredit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</link:label>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Diluted (in shares)</link:label>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Diluted weighted-average common shares outstanding (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherLongtermLiabilitiesMember" xlink:label="nwpx_OtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_OtherLongtermLiabilitiesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Long-term Liabilities [Member]</link:label>
    <link:label xlink:label="nwpx_OtherLongtermLiabilitiesMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents other long-term liabilities.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_OtherLongtermLiabilitiesMember" xlink:to="nwpx_OtherLongtermLiabilitiesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BookOverdrafts" xlink:label="nwpx_BookOverdrafts" xlink:type="locator"/>
    <link:label xlink:label="nwpx_BookOverdrafts-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_BookOverdrafts</link:label>
    <link:label xlink:label="nwpx_BookOverdrafts-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Book Overdrafts</link:label>
    <link:label xlink:label="nwpx_BookOverdrafts-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Outstanding checks in excess of funds on deposit that are shown in account payable.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_BookOverdrafts" xlink:to="nwpx_BookOverdrafts-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLossCarryforwards" xlink:label="us-gaap_OperatingLossCarryforwards" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLossCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingLossCarryforwards</link:label>
    <link:label xlink:label="us-gaap_OperatingLossCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Loss Carryforwards</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLossCarryforwards" xlink:to="us-gaap_OperatingLossCarryforwards-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromLinesOfCredit" xlink:label="us-gaap_ProceedsFromLinesOfCredit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromLinesOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ProceedsFromLinesOfCredit</link:label>
    <link:label xlink:label="us-gaap_ProceedsFromLinesOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Borrowings on line of credit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromLinesOfCredit" xlink:to="us-gaap_ProceedsFromLinesOfCredit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:label="srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">SEC Schedule, 12-09, Schedule of Valuation and Qualifying Accounts Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:to="srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementTable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement [Table]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementTable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfFinancialPositionAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Financial Position [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementOfFinancialPositionAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareDiluted-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Diluted (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareDiluted" xlink:to="us-gaap_EarningsPerShareDiluted-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Basic (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Effective income tax rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" xlink:label="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables</link:label>
    <link:label xlink:label="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Number of Customers with Receivable Balance in Excess of Ten Percent of Receivables</link:label>
    <link:label xlink:label="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Number of customers with balances in excess of 10% of total accounts receivable.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" xlink:to="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Acquisition [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareBasic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Basic (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareBasic" xlink:to="us-gaap_EarningsPerShareBasic-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Acquisition, Acquiree [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:label="us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:to="us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfCashFlowsAbstract" xlink:label="us-gaap_StatementOfCashFlowsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfCashFlowsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Cash Flows [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfCashFlowsAbstract" xlink:to="us-gaap_StatementOfCashFlowsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfStockholdersEquityAbstract" xlink:label="us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfStockholdersEquityAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Stockholders' Equity [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="us-gaap_StatementOfStockholdersEquityAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net current period adjustments to Other comprehensive income</link:label>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Other comprehensive income (loss), net of tax</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementAbstract" xlink:label="us-gaap_IncomeStatementAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Statement [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementAbstract" xlink:to="us-gaap_IncomeStatementAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilityMember" xlink:label="nwpx_AccruedLiabilityMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_AccruedLiabilityMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued Liability [Member]</link:label>
    <link:label xlink:label="nwpx_AccruedLiabilityMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Carrying value of liabilities incurred and payable as of the balance sheet date.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_AccruedLiabilityMember" xlink:to="nwpx_AccruedLiabilityMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue from External Customers by Geographic Areas [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:to="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseInterestExpense-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Interest on lease liabilities</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseInterestExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseInterestExpense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseInterestExpense" xlink:to="us-gaap_FinanceLeaseInterestExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Income before Income Tax, Domestic and Foreign [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:to="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityPaymentsDue</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total lease payments, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax</link:label>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Other Comprehensive Income (Loss), Cash Flow Hedge, Gain (Loss), before Reclassification and Tax</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Unrecognized Tax Benefits Roll Forward [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:to="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred" xlink:label="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Consideration Transferred</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred" xlink:to="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Amortization of right-of-use assets</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseRightOfUseAssetAmortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_WorkersCompensationInsurancePolicyTextBlock" xlink:label="nwpx_WorkersCompensationInsurancePolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_WorkersCompensationInsurancePolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Workers Compensation Insurance [Policy Text Block]</link:label>
    <link:label xlink:label="nwpx_WorkersCompensationInsurancePolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Disclosure of accounting policy for workers compensation insurance and calculation of liability balance.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_WorkersCompensationInsurancePolicyTextBlock" xlink:to="nwpx_WorkersCompensationInsurancePolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2028, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:to="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Thereafter, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Deferred Tax Assets and Liabilities [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:to="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilitiesPolicyTextBlock" xlink:label="nwpx_AccruedLiabilitiesPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_AccruedLiabilitiesPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued Liabilities [Policy Text Block]</link:label>
    <link:label xlink:label="nwpx_AccruedLiabilitiesPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information about accrued liabilities Policy.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_AccruedLiabilitiesPolicyTextBlock" xlink:to="nwpx_AccruedLiabilitiesPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:to="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Amount representing interest, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:to="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2024, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitment" xlink:label="us-gaap_OtherCommitment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherCommitment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherCommitment</link:label>
    <link:label xlink:label="us-gaap_OtherCommitment-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Other Commitment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherCommitment" xlink:to="us-gaap_OtherCommitment-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2025, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2026, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2027, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Finance leases, weighted-average discount rate</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:to="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsAxis" xlink:label="us-gaap_OtherCommitmentsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherCommitmentsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Commitments [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherCommitmentsAxis" xlink:to="us-gaap_OtherCommitmentsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsDomain" xlink:label="us-gaap_OtherCommitmentsDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherCommitmentsDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Commitments [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherCommitmentsDomain" xlink:to="us-gaap_OtherCommitmentsDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Finance leases, weighted-average remaining lease term (Year)</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:to="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsForProceedsFromOtherInvestingActivities" xlink:label="us-gaap_PaymentsForProceedsFromOtherInvestingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsForProceedsFromOtherInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsForProceedsFromOtherInvestingActivities</link:label>
    <link:label xlink:label="us-gaap_PaymentsForProceedsFromOtherInvestingActivities-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Other investing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsForProceedsFromOtherInvestingActivities" xlink:to="us-gaap_PaymentsForProceedsFromOtherInvestingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationOtherAdjustments" xlink:label="us-gaap_IncomeTaxReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxReconciliationOtherAdjustments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncomeTaxReconciliationOtherAdjustments</link:label>
    <link:label xlink:label="us-gaap_IncomeTaxReconciliationOtherAdjustments-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxReconciliationOtherAdjustments" xlink:to="us-gaap_IncomeTaxReconciliationOtherAdjustments-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash flows from financing activities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:label="us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Fair Value, Assets and Liabilities Measured on Recurring Basis [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:to="us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherLiabilitiesNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other long-term liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherLiabilitiesNoncurrent" xlink:to="us-gaap_OtherLiabilitiesNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfMajorCustomers" xlink:label="nwpx_NumberOfMajorCustomers" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NumberOfMajorCustomers-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_NumberOfMajorCustomers</link:label>
    <link:label xlink:label="nwpx_NumberOfMajorCustomers-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Number of Major Customers</link:label>
    <link:label xlink:label="nwpx_NumberOfMajorCustomers-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the number of major customers accounting for 10% or more of the specified concentration risk benchmark, which includes, but not limited to, sales revenue, accounts receivable, etc.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NumberOfMajorCustomers" xlink:to="nwpx_NumberOfMajorCustomers-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Change in valuation allowance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit</link:label>
    <link:label xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss) Defined Benefit Pension and Other Postretirement Plans Tax Expense (Benefit)</link:label>
    <link:label xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tax expense (benefit) included in accumulated other comprehensive income for defined benefit pension and other postretirement plans.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" xlink:to="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" xlink:type="locator"/>
    <link:label xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss) Cumulative Change in Net Gain (Loss) from Cash Flow Hedge Effect, Tax</link:label>
    <link:label xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tax expense (benefit) included in accumulated other comprehensive income for cash flow hedges.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" xlink:to="nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" xlink:type="locator"/>
    <link:label xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Accrued liabilities</link:label>
    <link:label xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities</link:label>
    <link:label xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of accrued liabilities, assumed at the acquisition date.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_WellsFargoBankNAMember" xlink:label="nwpx_WellsFargoBankNAMember" xlink:type="locator"/>
    <link:label xlink:label="nwpx_WellsFargoBankNAMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Wells Fargo Bank, N.A. [Member]</link:label>
    <link:label xlink:label="nwpx_WellsFargoBankNAMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Related to the lender Wells Fargo Bank, N.A.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_WellsFargoBankNAMember" xlink:to="nwpx_WellsFargoBankNAMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CorporateNonSegmentMember" xlink:label="us-gaap_CorporateNonSegmentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CorporateNonSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Corporate, Non-Segment [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CorporateNonSegmentMember" xlink:to="us-gaap_CorporateNonSegmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent" xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent" xlink:type="locator"/>
    <link:label xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent</link:label>
    <link:label xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Employee Contribution Percentage for Which Company Will Match at Fifty Percent</link:label>
    <link:label xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Employee contribution for which company will match at 50% under defined contribution retirement plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent" xlink:to="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" xlink:label="nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Contract Assets and Liabilities, Policy [Policy Text Block]</link:label>
    <link:label xlink:label="nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Disclosure of accounting policy for contract assets and liabilities.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" xlink:to="nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax</link:label>
    <link:label xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss), Unrecognized Net Actuarial Losses, Net of Tax</link:label>
    <link:label xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the amount of unrecognized actuarial loss recognized in accumulated other comprehensive income (loss), net of tax.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" xlink:to="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:label="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent</link:label>
    <link:label xlink:label="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Deferred Compensation Liability, Classified, Noncurrent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:to="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfNoncontributoryDefinedBenefitPlans" xlink:label="nwpx_NumberOfNoncontributoryDefinedBenefitPlans" xlink:type="locator"/>
    <link:label xlink:label="nwpx_NumberOfNoncontributoryDefinedBenefitPlans-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_NumberOfNoncontributoryDefinedBenefitPlans</link:label>
    <link:label xlink:label="nwpx_NumberOfNoncontributoryDefinedBenefitPlans-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Number of Non-contributory Defined Benefit Plans</link:label>
    <link:label xlink:label="nwpx_NumberOfNoncontributoryDefinedBenefitPlans-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Number of noncontributory defined benefit plans.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_NumberOfNoncontributoryDefinedBenefitPlans" xlink:to="nwpx_NumberOfNoncontributoryDefinedBenefitPlans-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ForeignExchangeForwardMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign Exchange Forward [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ForeignExchangeForwardMember" xlink:to="us-gaap_ForeignExchangeForwardMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockholdersEquity</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total stockholders&#8217; equity</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balance</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balances, December 31, 2022</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_StockholdersEquity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total liabilities assumed</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Payments to Acquire Businesses, Net of Cash Acquired, Total</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Acquisition of business, net of cash acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredTaxAssetTradeReceivableNet" xlink:label="nwpx_DeferredTaxAssetTradeReceivableNet" xlink:type="locator"/>
    <link:label xlink:label="nwpx_DeferredTaxAssetTradeReceivableNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_DeferredTaxAssetTradeReceivableNet</link:label>
    <link:label xlink:label="nwpx_DeferredTaxAssetTradeReceivableNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Trade receivable, net</link:label>
    <link:label xlink:label="nwpx_DeferredTaxAssetTradeReceivableNet-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount before allocation of valuation allowances of deferred tax asset attributable to trade receivables, net.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_DeferredTaxAssetTradeReceivableNet" xlink:to="nwpx_DeferredTaxAssetTradeReceivableNet-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_RetirementPlanExpense" xlink:label="nwpx_RetirementPlanExpense" xlink:type="locator"/>
    <link:label xlink:label="nwpx_RetirementPlanExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_RetirementPlanExpense</link:label>
    <link:label xlink:label="nwpx_RetirementPlanExpense-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Retirement Plan Expense</link:label>
    <link:label xlink:label="nwpx_RetirementPlanExpense-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents retirement plan expense.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_RetirementPlanExpense" xlink:to="nwpx_RetirementPlanExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:label="us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxReconciliationNondeductibleExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Nondeductible expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:to="us-gaap_IncomeTaxReconciliationNondeductibleExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementClassOfStockAxis" xlink:label="us-gaap_StatementClassOfStockAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementClassOfStockAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Class of Stock [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementClassOfStockAxis" xlink:to="us-gaap_StatementClassOfStockAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total assets acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization" xlink:label="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization" xlink:type="locator"/>
    <link:label xlink:label="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization</link:label>
    <link:label xlink:label="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Instrument, Covenant, Minimum Consolidated Earnings Before Interest, Taxes, Depreciation, and Amortization</link:label>
    <link:label xlink:label="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The minimum amount of consolidated earnings before interest, taxes, depreciation, and amortization pursuant to the debt agreement.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization" xlink:to="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InterestRateSwapMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Interest Rate Swap [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InterestRateSwapMember" xlink:to="us-gaap_InterestRateSwapMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeDomain" xlink:label="us-gaap_ReclassificationTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReclassificationTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Reclassification, Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReclassificationTypeDomain" xlink:to="us-gaap_ReclassificationTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeAxis" xlink:label="us-gaap_ReclassificationTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReclassificationTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Reclassification, Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="us-gaap_ReclassificationTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Accounts payable</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Unrealized gain (loss) on derivatives designated as cash flow hedges</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingSegmentsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating Segments [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingSegmentsMember" xlink:to="us-gaap_OperatingSegmentsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeFixedInterestRate" xlink:label="us-gaap_DerivativeFixedInterestRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DerivativeFixedInterestRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DerivativeFixedInterestRate</link:label>
    <link:label xlink:label="us-gaap_DerivativeFixedInterestRate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Derivative, Fixed Interest Rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DerivativeFixedInterestRate" xlink:to="us-gaap_DerivativeFixedInterestRate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Deferred income taxes</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">State expense, net of federal income tax effect</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:to="us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign rate differential</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:to="us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Property and equipment</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment-label" xlink:type="arc"/>
  </link:labelLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.PRE
<SEQUENCE>13
<FILENAME>nwpx-20231231_pre.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 02:45PM UTC 2024-03-05--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" 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.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts" xlink:href="nwpx-20231231.xsd#statement-schedule-ii-valuation-and-qualifying-accounts" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:label="srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information" xlink:href="nwpx-20231231.xsd#statement-note-19-segment-information" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:label="us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_ComprehensiveIncomeNoteTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements" xlink:href="nwpx-20231231.xsd#statement-note-10-fair-value-measurements" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_FairValueDisclosuresTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-4-inventories" xlink:href="nwpx-20231231.xsd#statement-note-4-inventories" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-4-inventories" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InventoryDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-document-and-entity-information" xlink:href="nwpx-20231231.xsd#statement-document-and-entity-information" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-document-and-entity-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditorFirmId" xlink:label="dei_AuditorFirmId" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditorLocation" xlink:label="dei_AuditorLocation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_AuditorName" xlink:label="dei_AuditorName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentAnnualReport" xlink:label="dei_DocumentAnnualReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFinStmtErrorCorrectionFlag" xlink:label="dei_DocumentFinStmtErrorCorrectionFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityPublicFloat" xlink:label="dei_EntityPublicFloat" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityVoluntaryFilers" xlink:label="dei_EntityVoluntaryFilers" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="dei_EntityWellKnownSeasonedIssuer" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_IcfrAuditorAttestationFlag" xlink:label="dei_IcfrAuditorAttestationFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationTable" xlink:to="dei_DocumentInformationLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCentralIndexKey" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityRegistrantName" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AmendmentFlag" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CurrentFiscalYearEndDate" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalPeriodFocus" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalYearFocus" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentType" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentAnnualReport" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentPeriodEndDate" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentTransitionReport" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFileNumber" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityIncorporationStateCountryCode" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityTaxIdentificationNumber" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressAddressLine1" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressCityOrTown" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressStateOrProvince" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressPostalZipCode" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CityAreaCode" xlink:type="arc"/>
    <link:presentationArc order="18" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_LocalPhoneNumber" xlink:type="arc"/>
    <link:presentationArc order="19" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_Security12bTitle" xlink:type="arc"/>
    <link:presentationArc order="20" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_TradingSymbol" xlink:type="arc"/>
    <link:presentationArc order="21" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_SecurityExchangeName" xlink:type="arc"/>
    <link:presentationArc order="22" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityWellKnownSeasonedIssuer" xlink:type="arc"/>
    <link:presentationArc order="23" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityVoluntaryFilers" xlink:type="arc"/>
    <link:presentationArc order="24" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCurrentReportingStatus" xlink:type="arc"/>
    <link:presentationArc order="25" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityInteractiveDataCurrent" xlink:type="arc"/>
    <link:presentationArc order="26" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFilerCategory" xlink:type="arc"/>
    <link:presentationArc order="27" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntitySmallBusiness" xlink:type="arc"/>
    <link:presentationArc order="28" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityEmergingGrowthCompany" xlink:type="arc"/>
    <link:presentationArc order="29" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_IcfrAuditorAttestationFlag" xlink:type="arc"/>
    <link:presentationArc order="30" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFinStmtErrorCorrectionFlag" xlink:type="arc"/>
    <link:presentationArc order="31" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityShellCompany" xlink:type="arc"/>
    <link:presentationArc order="32" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityPublicFloat" xlink:type="arc"/>
    <link:presentationArc order="33" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCommonStockSharesOutstanding" xlink:type="arc"/>
    <link:presentationArc order="34" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AuditorFirmId" xlink:type="arc"/>
    <link:presentationArc order="35" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AuditorName" xlink:type="arc"/>
    <link:presentationArc order="36" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AuditorLocation" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals" xlink:href="nwpx-20231231.xsd#statement-consolidated-balance-sheets-parentheticals" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockSharesOutstanding" xlink:label="us-gaap_PreferredStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesAuthorized" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesIssued" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesOutstanding" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesAuthorized" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesIssued" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-stockholders-equity-parentheticals" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfStockholdersEquityAbstract" xlink:label="us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent-n8" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-cash-flows-parentheticals" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromIncomeTaxRefunds" xlink:label="us-gaap_ProceedsFromIncomeTaxRefunds" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfCashFlowsAbstract" xlink:label="us-gaap_StatementOfCashFlowsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfCashFlowsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ProceedsFromIncomeTaxRefunds" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#InsiderTradingArrangements" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_InsiderTradingArrLineItems" xlink:label="ecd_InsiderTradingArrLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_MtrlTermsOfTrdArrTextBlock" xlink:label="ecd_MtrlTermsOfTrdArrTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_NonRule10b51ArrAdoptedFlag" xlink:label="ecd_NonRule10b51ArrAdoptedFlag-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_NonRule10b51ArrTrmntdFlag" xlink:label="ecd_NonRule10b51ArrTrmntdFlag-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_Rule10b51ArrAdoptedFlag" xlink:label="ecd_Rule10b51ArrAdoptedFlag-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd#ecd_Rule10b51ArrTrmntdFlag" xlink:label="ecd_Rule10b51ArrTrmntdFlag-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ecd_InsiderTradingArrLineItems" xlink:to="ecd_MtrlTermsOfTrdArrTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ecd_InsiderTradingArrLineItems" xlink:to="ecd_Rule10b51ArrAdoptedFlag-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ecd_InsiderTradingArrLineItems" xlink:to="ecd_NonRule10b51ArrAdoptedFlag-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ecd_InsiderTradingArrLineItems" xlink:to="ecd_Rule10b51ArrTrmntdFlag-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ecd_InsiderTradingArrLineItems" xlink:to="ecd_NonRule10b51ArrTrmntdFlag-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-1-organization" xlink:href="nwpx-20231231.xsd#statement-note-1-organization" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-1-organization" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies" xlink:href="nwpx-20231231.xsd#statement-note-2-summary-of-significant-accounting-policies" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilityMember" xlink:label="nwpx_AccruedLiabilityMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherLongtermLiabilitiesMember" xlink:label="nwpx_OtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LandImprovementsMember" xlink:label="us-gaap_LandImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseholdImprovementsMember" xlink:label="us-gaap_LeaseholdImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_MachineryAndEquipmentMember" xlink:label="us-gaap_MachineryAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_LandImprovementsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_LeaseholdImprovementsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_MachineryAndEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="nwpx_AccruedLiabilityMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="nwpx_OtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationDisclosureTextBlock" xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment" xlink:href="nwpx-20231231.xsd#statement-note-5-property-and-equipment" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_MX" xlink:label="country_MX" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_MX" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-7-current-debt" xlink:href="nwpx-20231231.xsd#statement-note-7-current-debt" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-7-current-debt" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_InterimFundingAgreementifaMember" xlink:label="nwpx_InterimFundingAgreementifaMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentAxis" xlink:label="us-gaap_DebtInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermDebtTextBlock" xlink:label="us-gaap_LongTermDebtTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DebtInstrumentAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="nwpx_InterimFundingAgreementifaMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_LongTermDebtTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement" xlink:href="nwpx-20231231.xsd#statement-note-8-credit-agreement" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_WellsFargoBankNAMember" xlink:label="nwpx_WellsFargoBankNAMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityAxis" xlink:label="us-gaap_CreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityAxis" xlink:label="us-gaap_LineOfCreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityLenderDomain" xlink:label="us-gaap_LineOfCreditFacilityLenderDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevolvingCreditFacilityMember" xlink:label="us-gaap_RevolvingCreditFacilityMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LineOfCreditFacilityAxis" xlink:to="us-gaap_LineOfCreditFacilityLenderDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LineOfCreditFacilityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LineOfCreditFacilityAxis" xlink:to="nwpx_WellsFargoBankNAMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CreditFacilityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_RevolvingCreditFacilityMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DebtDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases" xlink:href="nwpx-20231231.xsd#statement-note-9-leases" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LesseeLeaseDisclosureTextBlock" xlink:label="nwpx_LesseeLeaseDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="nwpx_LesseeLeaseDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities" xlink:href="nwpx-20231231.xsd#statement-note-11-derivative-instruments-and-hedging-activities" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ForeignExchangeForward1Member" xlink:label="nwpx_ForeignExchangeForward1Member" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ReclassifiedToInterestExpenseMember" xlink:label="nwpx_ReclassifiedToInterestExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ReclassifiedToNetSalesMember" xlink:label="nwpx_ReclassifiedToNetSalesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_The1941InterestRateSwapMember" xlink:label="nwpx_The1941InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_The296InterestRateSwapMember" xlink:label="nwpx_The296InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowHedgingMember" xlink:label="us-gaap_CashFlowHedgingMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:label="us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:label="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DesignatedAsHedgingInstrumentMember" xlink:label="us-gaap_DesignatedAsHedgingInstrumentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationAxis" xlink:label="us-gaap_HedgingDesignationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationDomain" xlink:label="us-gaap_HedgingDesignationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingRelationshipDomain" xlink:label="us-gaap_HedgingRelationshipDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NondesignatedMember" xlink:label="us-gaap_NondesignatedMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeAxis" xlink:label="us-gaap_ReclassificationTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeDomain" xlink:label="us-gaap_ReclassificationTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:to="us-gaap_HedgingRelationshipDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_HedgingDesignationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="us-gaap_ReclassificationTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_HedgingDesignationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_DesignatedAsHedgingInstrumentMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="nwpx_ForeignExchangeForward1Member" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_NondesignatedMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="nwpx_The1941InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:to="us-gaap_CashFlowHedgingMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="nwpx_The296InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ReclassificationTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="nwpx_ReclassifiedToNetSalesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="nwpx_ReclassifiedToInterestExpenseMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity" xlink:href="nwpx-20231231.xsd#statement-note-12-stockholders-equity" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AtthemarketOfferingMember" xlink:label="nwpx_AtthemarketOfferingMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ShareRepurchaseProgramMember" xlink:label="nwpx_ShareRepurchaseProgramMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SaleOfStockNameOfTransactionDomain" xlink:label="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramAxis" xlink:label="us-gaap_ShareRepurchaseProgramAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramDomain" xlink:label="us-gaap_ShareRepurchaseProgramDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:label="us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SubsidiarySaleOfStockAxis" xlink:label="us-gaap_SubsidiarySaleOfStockAxis" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ShareRepurchaseProgramAxis" xlink:to="us-gaap_ShareRepurchaseProgramDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SubsidiarySaleOfStockAxis" xlink:to="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_SubsidiarySaleOfStockAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SubsidiarySaleOfStockAxis" xlink:to="nwpx_AtthemarketOfferingMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ShareRepurchaseProgramAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ShareRepurchaseProgramAxis" xlink:to="nwpx_ShareRepurchaseProgramMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans" xlink:href="nwpx-20231231.xsd#statement-note-13-retirement-plans" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DefinedContributionPlanMember" xlink:label="nwpx_DefinedContributionPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:label="nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherLongtermLiabilitiesMember" xlink:label="nwpx_OtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkusaDefinedContributionPlanMember" xlink:label="nwpx_ParkusaDefinedContributionPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="nwpx_DefinedContributionPlanMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="nwpx_ParkusaDefinedContributionPlanMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="nwpx_OtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation" xlink:href="nwpx-20231231.xsd#statement-note-14-sharebased-compensation" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:label="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_StockAwardsMember" xlink:label="nwpx_StockAwardsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_DirectorMember" xlink:label="srt_DirectorMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualAxis" xlink:label="srt_TitleOfIndividualAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="nwpx_StockAwardsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_TitleOfIndividualAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_DirectorMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies" xlink:href="nwpx-20231231.xsd#statement-note-15-commitments-and-contingencies" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LowerWillametteGroupMember" xlink:label="nwpx_LowerWillametteGroupMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:label="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PortlandHarborSuperfundSiteMember" xlink:label="nwpx_PortlandHarborSuperfundSiteMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_CounterpartyNameAxis" xlink:label="srt_CounterpartyNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RepurchaseAgreementCounterpartyNameDomain" xlink:label="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CapitalAdditionsMember" xlink:label="us-gaap_CapitalAdditionsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:label="us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteAxis" xlink:label="us-gaap_EnvironmentalRemediationSiteAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteDomain" xlink:label="us-gaap_EnvironmentalRemediationSiteDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:label="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingencyNatureDomain" xlink:label="us-gaap_LossContingencyNatureDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsAxis" xlink:label="us-gaap_OtherCommitmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsDomain" xlink:label="us-gaap_OtherCommitmentsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_CounterpartyNameAxis" xlink:to="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherCommitmentsAxis" xlink:to="us-gaap_OtherCommitmentsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:to="us-gaap_LossContingencyNatureDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EnvironmentalRemediationSiteAxis" xlink:to="us-gaap_EnvironmentalRemediationSiteDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_CounterpartyNameAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_CounterpartyNameAxis" xlink:to="nwpx_LowerWillametteGroupMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_EnvironmentalRemediationSiteAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EnvironmentalRemediationSiteAxis" xlink:to="nwpx_PortlandHarborSuperfundSiteMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:to="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_OtherCommitmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherCommitmentsAxis" xlink:to="us-gaap_CapitalAdditionsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OneSppCustomerMember" xlink:label="nwpx_OneSppCustomerMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:label="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MajorCustomersAxis" xlink:label="srt_MajorCustomersAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_NameOfMajorCustomerDomain" xlink:label="srt_NameOfMajorCustomerDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskByTypeAxis" xlink:label="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CustomerConcentrationRiskMember" xlink:label="us-gaap_CustomerConcentrationRiskMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesRevenueNetMember" xlink:label="us-gaap_SalesRevenueNetMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_MajorCustomersAxis" xlink:to="srt_NameOfMajorCustomerDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_SalesRevenueNetMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_CustomerConcentrationRiskMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_MajorCustomersAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_MajorCustomersAxis" xlink:to="nwpx_OneSppCustomerMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NotesToFinancialStatementsAbstract" xlink:label="nwpx_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DomesticCountryMember" xlink:label="us-gaap_DomesticCountryMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCountryMember" xlink:label="us-gaap_ForeignCountryMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityAxis" xlink:label="us-gaap_IncomeTaxAuthorityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityDomain" xlink:label="us-gaap_IncomeTaxAuthorityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StateAndLocalJurisdictionMember" xlink:label="us-gaap_StateAndLocalJurisdictionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_IncomeTaxAuthorityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeTaxAuthorityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_DomesticCountryMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_StateAndLocalJurisdictionMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_ForeignCountryMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies" xlink:href="nwpx-20231231.xsd#statement-significant-accounting-policies-policies" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilitiesPolicyTextBlock" xlink:label="nwpx_AccruedLiabilitiesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" xlink:label="nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_WorkersCompensationInsurancePolicyTextBlock" xlink:label="nwpx_WorkersCompensationInsurancePolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-significant-accounting-policies-policies" xlink:label="nwpx_statement-statement-significant-accounting-policies-policies" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationsPolicy" xlink:label="us-gaap_BusinessCombinationsPolicy" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskCreditRisk" xlink:label="us-gaap_ConcentrationRiskCreditRisk" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConsolidationPolicyTextBlock" xlink:label="us-gaap_ConsolidationPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativesPolicyTextBlock" xlink:label="us-gaap_DerivativesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerSharePolicyTextBlock" xlink:label="us-gaap_EarningsPerSharePolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxPolicyTextBlock" xlink:label="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryPolicyTextBlock" xlink:label="us-gaap_InventoryPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeLeasesPolicyTextBlock" xlink:label="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionAndOtherPostretirementPlansPolicy" xlink:label="us-gaap_PensionAndOtherPostretirementPlansPolicy" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReceivablesPolicyTextBlock" xlink:label="us-gaap_ReceivablesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRecognitionPolicyTextBlock" xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:label="us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquityPolicyTextBlock" xlink:label="us-gaap_StockholdersEquityPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UseOfEstimates" xlink:label="us-gaap_UseOfEstimates" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-significant-accounting-policies-policies" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PolicyTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PolicyTextBlockAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ConsolidationPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_UseOfEstimates" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_BusinessCombinationsPolicy" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ReceivablesPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_InventoryPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="nwpx_WorkersCompensationInsurancePolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="nwpx_AccruedLiabilitiesPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_DerivativesPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_StockholdersEquityPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_PensionAndOtherPostretirementPlansPolicy" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="18" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:type="arc"/>
    <link:presentationArc order="19" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="20" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="21" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_EarningsPerSharePolicyTextBlock" xlink:type="arc"/>
    <link:presentationArc order="22" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ConcentrationRiskCreditRisk" xlink:type="arc"/>
    <link:presentationArc order="23" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables" xlink:href="nwpx-20231231.xsd#statement-note-2-summary-of-significant-accounting-policies-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-tables" xlink:label="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-3-business-combinations-tables" xlink:label="nwpx_statement-statement-note-3-business-combinations-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:label="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock" xlink:label="us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock" xlink:label="us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-3-business-combinations-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_BusinessAcquisitionProFormaInformationTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables" xlink:href="nwpx-20231231.xsd#statement-note-4-inventories-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" xlink:label="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-4-inventories-tables" xlink:label="nwpx_statement-statement-note-4-inventories-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-4-inventories-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables" xlink:href="nwpx-20231231.xsd#statement-note-5-property-and-equipment-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-5-property-and-equipment-tables" xlink:label="nwpx_statement-statement-note-5-property-and-equipment-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-5-property-and-equipment-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-6-goodwill-and-intangible-assets-tables" xlink:label="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" xlink:label="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock" xlink:label="nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LesseeLiabilityMaturityTableTextBlock" xlink:label="nwpx_LesseeLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" xlink:label="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-tables" xlink:label="nwpx_statement-statement-note-9-leases-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseCostTableTextBlock" xlink:label="us-gaap_LeaseCostTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-9-leases-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_LeaseCostTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_LesseeLiabilityMaturityTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables" xlink:href="nwpx-20231231.xsd#statement-note-10-fair-value-measurements-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-10-fair-value-measurements-tables" xlink:label="nwpx_statement-statement-note-10-fair-value-measurements-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:label="us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-10-fair-value-measurements-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:href="nwpx-20231231.xsd#statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:label="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:label="us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables" xlink:href="nwpx-20231231.xsd#statement-note-14-sharebased-compensation-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" xlink:label="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-14-sharebased-compensation-tables" xlink:label="nwpx_statement-statement-note-14-sharebased-compensation-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:label="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-14-sharebased-compensation-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-16-revenue-tables" xlink:label="nwpx_statement-statement-note-16-revenue-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:label="us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-16-revenue-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-tables" xlink:label="nwpx_statement-statement-note-17-income-taxes-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-17-income-taxes-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:label="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables" xlink:href="nwpx-20231231.xsd#statement-note-19-segment-information-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-19-segment-information-tables" xlink:label="nwpx_statement-statement-note-19-segment-information-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock" xlink:label="us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-19-segment-information-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:href="nwpx-20231231.xsd#statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock" xlink:label="nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:label="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-1-organization-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfManufacturingFacilities" xlink:label="nwpx_NumberOfManufacturingFacilities-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NumberOfOperatingSegments" xlink:label="us-gaap_NumberOfOperatingSegments-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NumberOfOperatingSegments-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfManufacturingFacilities-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilityMember" xlink:label="nwpx_AccruedLiabilityMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BookOverdrafts" xlink:label="nwpx_BookOverdrafts-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables" xlink:label="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherLongtermLiabilitiesMember" xlink:label="nwpx_OtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccruedBonusesCurrent" xlink:label="us-gaap_AccruedBonusesCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:label="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCurrencyTransactionGainLossRealized" xlink:label="us-gaap_ForeignCurrencyTransactionGainLossRealized-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LandImprovementsMember" xlink:label="us-gaap_LandImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseholdImprovementsMember" xlink:label="us-gaap_LeaseholdImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_MachineryAndEquipmentMember" xlink:label="us-gaap_MachineryAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesAndExciseTaxPayableCurrent" xlink:label="us-gaap_SalesAndExciseTaxPayableCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WorkersCompensationLiabilityCurrent" xlink:label="us-gaap_WorkersCompensationLiabilityCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent" xlink:label="us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WorkersCompensationLiabilityNoncurrent" xlink:label="us-gaap_WorkersCompensationLiabilityNoncurrent-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_LandImprovementsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_LeaseholdImprovementsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_MachineryAndEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="nwpx_AccruedLiabilityMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="nwpx_OtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_BookOverdrafts-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentUsefulLife-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WorkersCompensationLiabilityCurrent-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WorkersCompensationLiabilityNoncurrent-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccruedBonusesCurrent-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SalesAndExciseTaxPayableCurrent-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ForeignCurrencyTransactionGainLossRealized-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount-2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired" xlink:label="us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationAcquisitionRelatedCosts" xlink:label="us-gaap_BusinessCombinationAcquisitionRelatedCosts-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred" xlink:label="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:label="us-gaap_GoodwillPurchaseAccountingAdjustments-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillPurchaseAccountingAdjustments-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationAcquisitionRelatedCosts-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-5-property-and-equipment-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_MX" xlink:label="country_MX" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_MX" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-7-current-debt-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DebtInstrumentCovenantMinimumEbitda" xlink:label="nwpx_DebtInstrumentCovenantMinimumEbitda-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_InterimFundingAgreementifaMember" xlink:label="nwpx_InterimFundingAgreementifaMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_MaximumSeniorLeverageRatio" xlink:label="nwpx_MaximumSeniorLeverageRatio-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentAxis" xlink:label="us-gaap_DebtInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentFaceAmount" xlink:label="us-gaap_DebtInstrumentFaceAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtWeightedAverageInterestRate" xlink:label="us-gaap_DebtWeightedAverageInterestRate-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShortTermBorrowings" xlink:label="us-gaap_ShortTermBorrowings-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DebtInstrumentAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="nwpx_InterimFundingAgreementifaMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentFaceAmount-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShortTermBorrowings-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtWeightedAverageInterestRate-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_MaximumSeniorLeverageRatio-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_DebtInstrumentCovenantMinimumEbitda-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-8-credit-agreement-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization" xlink:label="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized" xlink:label="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_MaximumSeniorLeverageRatioRequirement" xlink:label="nwpx_MaximumSeniorLeverageRatioRequirement-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:label="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_WellsFargoBankNAMember" xlink:label="nwpx_WellsFargoBankNAMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityAxis" xlink:label="us-gaap_CreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DebtWeightedAverageInterestRate" xlink:label="us-gaap_DebtWeightedAverageInterestRate-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestCostsCapitalized" xlink:label="us-gaap_InterestCostsCapitalized-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LettersOfCreditOutstandingAmount" xlink:label="us-gaap_LettersOfCreditOutstandingAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCredit" xlink:label="us-gaap_LineOfCredit-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityAxis" xlink:label="us-gaap_LineOfCreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet" xlink:label="us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityLenderDomain" xlink:label="us-gaap_LineOfCreditFacilityLenderDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:label="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevolvingCreditFacilityMember" xlink:label="us-gaap_RevolvingCreditFacilityMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LineOfCreditFacilityAxis" xlink:to="us-gaap_LineOfCreditFacilityLenderDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LineOfCreditFacilityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LineOfCreditFacilityAxis" xlink:to="nwpx_WellsFargoBankNAMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CreditFacilityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_RevolvingCreditFacilityMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="nwpx_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_MaximumSeniorLeverageRatioRequirement-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InterestCostsCapitalized-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCredit-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LettersOfCreditOutstandingAmount-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtWeightedAverageInterestRate-2" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-11-derivative-instruments-and-hedging-activities-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ForeignExchangeForward1Member" xlink:label="nwpx_ForeignExchangeForward1Member" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ReclassifiedToInterestExpenseMember" xlink:label="nwpx_ReclassifiedToInterestExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ReclassifiedToNetSalesMember" xlink:label="nwpx_ReclassifiedToNetSalesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_The1941InterestRateSwapMember" xlink:label="nwpx_The1941InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_The296InterestRateSwapMember" xlink:label="nwpx_The296InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths" xlink:label="us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowHedgingMember" xlink:label="us-gaap_CashFlowHedgingMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeFixedInterestRate" xlink:label="us-gaap_DerivativeFixedInterestRate-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:label="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeNotionalAmount" xlink:label="us-gaap_DerivativeNotionalAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DesignatedAsHedgingInstrumentMember" xlink:label="us-gaap_DesignatedAsHedgingInstrumentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationAxis" xlink:label="us-gaap_HedgingDesignationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationDomain" xlink:label="us-gaap_HedgingDesignationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingRelationshipDomain" xlink:label="us-gaap_HedgingRelationshipDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NondesignatedMember" xlink:label="us-gaap_NondesignatedMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeAxis" xlink:label="us-gaap_ReclassificationTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationTypeDomain" xlink:label="us-gaap_ReclassificationTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:to="us-gaap_HedgingRelationshipDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_HedgingDesignationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="us-gaap_ReclassificationTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_HedgingDesignationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_DesignatedAsHedgingInstrumentMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="nwpx_ForeignExchangeForward1Member" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_NondesignatedMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="nwpx_The1941InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis" xlink:to="us-gaap_CashFlowHedgingMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="nwpx_The296InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ReclassificationTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="nwpx_ReclassifiedToNetSalesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ReclassificationTypeAxis" xlink:to="nwpx_ReclassifiedToInterestExpenseMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DerivativeNotionalAmount-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DerivativeFixedInterestRate-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-12-stockholders-equity-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AtthemarketOfferingMember" xlink:label="nwpx_AtthemarketOfferingMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EquityOfferingMaximumOfferingAmount" xlink:label="nwpx_EquityOfferingMaximumOfferingAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_Rule10b51TradingPlanDesignatedAmount" xlink:label="nwpx_Rule10b51TradingPlanDesignatedAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ShareRepurchaseProgramMember" xlink:label="nwpx_ShareRepurchaseProgramMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SaleOfStockNameOfTransactionDomain" xlink:label="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramAxis" xlink:label="us-gaap_ShareRepurchaseProgramAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareRepurchaseProgramDomain" xlink:label="us-gaap_ShareRepurchaseProgramDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:label="us-gaap_StockRepurchaseProgramAuthorizedAmount1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:label="us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SubsidiarySaleOfStockAxis" xlink:label="us-gaap_SubsidiarySaleOfStockAxis" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ShareRepurchaseProgramAxis" xlink:to="us-gaap_ShareRepurchaseProgramDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SubsidiarySaleOfStockAxis" xlink:to="us-gaap_SaleOfStockNameOfTransactionDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_SubsidiarySaleOfStockAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SubsidiarySaleOfStockAxis" xlink:to="nwpx_AtthemarketOfferingMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ShareRepurchaseProgramAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ShareRepurchaseProgramAxis" xlink:to="nwpx_ShareRepurchaseProgramMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EquityOfferingMaximumOfferingAmount-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchaseProgramAuthorizedAmount1-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_Rule10b51TradingPlanDesignatedAmount-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-13-retirement-plans-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax" xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions" xlink:label="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DefinedContributionPlanMember" xlink:label="nwpx_DefinedContributionPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent" xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent" xlink:label="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:label="nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfNoncontributoryDefinedBenefitPlans" xlink:label="nwpx_NumberOfNoncontributoryDefinedBenefitPlans-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherLongtermLiabilitiesMember" xlink:label="nwpx_OtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkusaDefinedContributionPlanMember" xlink:label="nwpx_ParkusaDefinedContributionPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_RetirementPlanExpense" xlink:label="nwpx_RetirementPlanExpense-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:label="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation" xlink:label="us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent" xlink:label="us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate" xlink:label="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets" xlink:label="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanFairValueOfPlanAssets" xlink:label="us-gaap_DefinedBenefitPlanFairValueOfPlanAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost" xlink:label="us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="nwpx_DefinedContributionPlanMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="nwpx_ParkusaDefinedContributionPlanMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="nwpx_NonqualifiedRetirementSavingsPlanMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="nwpx_OtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfNoncontributoryDefinedBenefitPlans-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanFairValueOfPlanAssets-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate-2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets-2" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent-2" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_RetirementPlanExpense-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-14-sharebased-compensation-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed" xlink:label="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfActiveStockIncentivePlans" xlink:label="nwpx_NumberOfActiveStockIncentivePlans-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfInactiveStockIncentivePlans" xlink:label="nwpx_NumberOfInactiveStockIncentivePlans-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PerformanceAwardsIssuedMultiplier" xlink:label="nwpx_PerformanceAwardsIssuedMultiplier-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PerformanceShareAwardTargetLevelPercentage" xlink:label="nwpx_PerformanceShareAwardTargetLevelPercentage-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:label="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance" xlink:label="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_StockAwardsMember" xlink:label="nwpx_StockAwardsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_DirectorMember" xlink:label="srt_DirectorMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualAxis" xlink:label="srt_TitleOfIndividualAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:label="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:label="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_TitleOfIndividualWithRelationshipToEntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="nwpx_StockAwardsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_TitleOfIndividualAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_TitleOfIndividualAxis" xlink:to="srt_DirectorMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfActiveStockIncentivePlans-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfInactiveStockIncentivePlans-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_PerformanceShareAwardTargetLevelPercentage-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_PerformanceAwardsIssuedMultiplier-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions-2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-2" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-15-commitments-and-contingencies-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EstimatedCostOfEPASelectedRemedy" xlink:label="nwpx_EstimatedCostOfEPASelectedRemedy-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EstimatedTimeToCompleteSelectedEPARemedy" xlink:label="nwpx_EstimatedTimeToCompleteSelectedEPARemedy-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LowerWillametteGroupMember" xlink:label="nwpx_LowerWillametteGroupMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfPotentiallyResponsibleParties" xlink:label="nwpx_NumberOfPotentiallyResponsibleParties-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived" xlink:label="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:label="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PortlandHarborSuperfundSiteMember" xlink:label="nwpx_PortlandHarborSuperfundSiteMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_CounterpartyNameAxis" xlink:label="srt_CounterpartyNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RepurchaseAgreementCounterpartyNameDomain" xlink:label="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CapitalAdditionsMember" xlink:label="us-gaap_CapitalAdditionsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteAxis" xlink:label="us-gaap_EnvironmentalRemediationSiteAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EnvironmentalRemediationSiteDomain" xlink:label="us-gaap_EnvironmentalRemediationSiteDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LettersOfCreditOutstandingAmount" xlink:label="us-gaap_LettersOfCreditOutstandingAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:label="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingencyAccrualCarryingValueCurrent" xlink:label="us-gaap_LossContingencyAccrualCarryingValueCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LossContingencyNatureDomain" xlink:label="us-gaap_LossContingencyNatureDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitment" xlink:label="us-gaap_OtherCommitment-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsAxis" xlink:label="us-gaap_OtherCommitmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherCommitmentsDomain" xlink:label="us-gaap_OtherCommitmentsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_CounterpartyNameAxis" xlink:to="srt_RepurchaseAgreementCounterpartyNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherCommitmentsAxis" xlink:to="us-gaap_OtherCommitmentsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:to="us-gaap_LossContingencyNatureDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EnvironmentalRemediationSiteAxis" xlink:to="us-gaap_EnvironmentalRemediationSiteDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_CounterpartyNameAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_CounterpartyNameAxis" xlink:to="nwpx_LowerWillametteGroupMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_EnvironmentalRemediationSiteAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EnvironmentalRemediationSiteAxis" xlink:to="nwpx_PortlandHarborSuperfundSiteMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LossContingenciesByNatureOfContingencyAxis" xlink:to="nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_OtherCommitmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherCommitmentsAxis" xlink:to="us-gaap_CapitalAdditionsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfPotentiallyResponsibleParties-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EstimatedCostOfEPASelectedRemedy-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EstimatedTimeToCompleteSelectedEPARemedy-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LossContingencyAccrualCarryingValueCurrent-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherCommitment-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LettersOfCreditOutstandingAmount-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-1-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax" xlink:label="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax-n2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NumberOfMajorCustomers" xlink:label="nwpx_NumberOfMajorCustomers-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OneSppCustomerMember" xlink:label="nwpx_OneSppCustomerMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:label="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MajorCustomersAxis" xlink:label="srt_MajorCustomersAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_NameOfMajorCustomerDomain" xlink:label="srt_NameOfMajorCustomerDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskByTypeAxis" xlink:label="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskPercentage1" xlink:label="us-gaap_ConcentrationRiskPercentage1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CustomerConcentrationRiskMember" xlink:label="us-gaap_CustomerConcentrationRiskMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligation" xlink:label="us-gaap_RevenueRemainingPerformanceObligation-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesRevenueNetMember" xlink:label="us-gaap_SalesRevenueNetMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_MajorCustomersAxis" xlink:to="srt_NameOfMajorCustomerDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_SalesRevenueNetMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_CustomerConcentrationRiskMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_MajorCustomersAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_MajorCustomersAxis" xlink:to="nwpx_OneSppCustomerMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ConcentrationRiskPercentage1-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_NumberOfMajorCustomers-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax-n2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueRemainingPerformanceObligation-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-2-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1" xlink:label="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:label="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueRemainingPerformanceObligationPercentage" xlink:label="us-gaap_RevenueRemainingPerformanceObligationPercentage-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueRemainingPerformanceObligationPercentage-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoteToFinancialStatementDetailsTextual" xlink:label="nwpx_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_OperatingLossCarryforwardsExpirationYear" xlink:label="nwpx_OperatingLossCarryforwardsExpirationYear-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_TaxCreditCarryforwardExpirationYear" xlink:label="nwpx_TaxCreditCarryforwardExpirationYear-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DomesticCountryMember" xlink:label="us-gaap_DomesticCountryMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignCountryMember" xlink:label="us-gaap_ForeignCountryMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityAxis" xlink:label="us-gaap_IncomeTaxAuthorityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxAuthorityDomain" xlink:label="us-gaap_IncomeTaxAuthorityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OpenTaxYear" xlink:label="us-gaap_OpenTaxYear-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLossCarryforwards" xlink:label="us-gaap_OperatingLossCarryforwards-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StateAndLocalJurisdictionMember" xlink:label="us-gaap_StateAndLocalJurisdictionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TaxCreditCarryforwardAmount" xlink:label="us-gaap_TaxCreditCarryforwardAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_IncomeTaxAuthorityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeTaxAuthorityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_DomesticCountryMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_StateAndLocalJurisdictionMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeTaxAuthorityAxis" xlink:to="us-gaap_ForeignCountryMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TaxCreditCarryforwardAmount-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_TaxCreditCarryforwardExpirationYear-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLossCarryforwards-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_OperatingLossCarryforwardsExpirationYear-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OpenTaxYear-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit" xlink:label="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities-1" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities-1" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets" xlink:label="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets-1" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:label="nwpx_statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents-1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables-1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory-1" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets-1" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment-1" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets-1" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill-1" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets-1" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets-3" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable-1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities-1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities-1" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_Goodwill-1" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1-1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:label="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-cash-flows" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedPaymentsForRepurchaseOfCommonStock" xlink:label="nwpx_AccruedPaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:label="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_GainOnInsuranceProceeds" xlink:label="nwpx_GainOnInsuranceProceeds-n8" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" xlink:label="nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition" xlink:label="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CapitalExpendituresIncurredButNotYetPaid" xlink:label="us-gaap_CapitalExpendituresIncurredButNotYetPaid" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:label="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxesPaidNet" xlink:label="us-gaap_IncomeTaxesPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:label="us-gaap_IncreaseDecreaseInContractWithCustomerAsset-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsForProceedsFromOtherInvestingActivities" xlink:label="us-gaap_PaymentsForProceedsFromOtherInvestingActivities-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquireIntangibleAssets" xlink:label="us-gaap_PaymentsToAcquireIntangibleAssets-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:label="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromLinesOfCredit" xlink:label="us-gaap_ProceedsFromLinesOfCredit-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:label="us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RepaymentsOfLinesOfCredit" xlink:label="us-gaap_RepaymentsOfLinesOfCredit-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfCashFlowsAbstract" xlink:label="us-gaap_StatementOfCashFlowsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfCashFlowsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AmortizationOfIntangibleAssets-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="nwpx_GainOnInsuranceProceeds-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ShareBasedCompensation-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_OtherNoncashIncomeExpense-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables-n9" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInContractWithCustomerAsset-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInInventories-n9" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-n9" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireIntangibleAssets-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsForProceedsFromOtherInvestingActivities-n8" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromLinesOfCredit-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfLinesOfCredit-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromIssuanceOfLongTermDebt" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfLongTermDebt-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_FinanceLeasePrincipalPayments-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-n8" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock-n8" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromPaymentsForOtherFinancingActivities" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-3" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-4" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-5" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_InterestPaidNet" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_IncomeTaxesPaidNet" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="us-gaap_CapitalExpendituresIncurredButNotYetPaid" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="nwpx_AccruedPaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:href="nwpx-20231231.xsd#statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_BacklogMember" xlink:label="nwpx_BacklogMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:label="nwpx_statement-statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:label="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PatentsMember" xlink:label="us-gaap_PatentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TrademarksAndTradeNamesMember" xlink:label="us-gaap_TrademarksAndTradeNamesMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-2-business-combinations-intangible-assets-acquired-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_TrademarksAndTradeNamesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_PatentsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="nwpx_BacklogMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details" xlink:href="nwpx-20231231.xsd#statement-note-3-business-combinations-pro-forma-summary-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:label="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-3-business-combinations-pro-forma-summary-details" xlink:label="nwpx_statement-statement-note-3-business-combinations-pro-forma-summary-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss" xlink:label="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BusinessAcquisitionsProFormaRevenue" xlink:label="us-gaap_BusinessAcquisitionsProFormaRevenue-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-3-business-combinations-pro-forma-summary-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="nwpx_ParkEnvironmentalEquipmentLlcMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionsProFormaRevenue-1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss-1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:label="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilityMember" xlink:label="nwpx_AccruedLiabilityMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:label="nwpx_statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherLiabilitiesMember" xlink:label="us-gaap_OtherLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="nwpx_AccruedLiabilityMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_OtherLiabilitiesMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive-2" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-2" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDue-3" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-3" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
    <link:presentationArc order="18" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent-n8" xlink:type="arc"/>
    <link:presentationArc order="19" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent-n8" xlink:type="arc"/>
    <link:presentationArc order="20" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="21" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:href="nwpx-20231231.xsd#statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:label="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:label="nwpx_statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n8" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-5" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:label="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:label="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:label="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-5" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:href="nwpx-20231231.xsd#statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:label="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AllowanceForCreditLossMember" xlink:label="us-gaap_AllowanceForCreditLossMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:label="us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesBalance" xlink:label="us-gaap_ValuationAllowancesAndReservesBalance-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesBalance" xlink:label="us-gaap_ValuationAllowancesAndReservesBalance-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:label="us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesDeductions" xlink:label="us-gaap_ValuationAllowancesAndReservesDeductions-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesDomain" xlink:label="us-gaap_ValuationAllowancesAndReservesDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:label="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:to="us-gaap_ValuationAllowancesAndReservesDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:to="us-gaap_AllowanceForCreditLossMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:to="us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ValuationAllowancesAndReservesBalance-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ValuationAllowancesAndReservesDeductions-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ValuationAllowancesAndReservesBalance-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets" xlink:href="nwpx-20231231.xsd#statement-consolidated-balance-sheets" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccruedLiabilitiesCurrent" xlink:label="us-gaap_AccruedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommitmentsAndContingencies" xlink:label="us-gaap_CommitmentsAndContingencies" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetNetCurrent" xlink:label="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiabilityCurrent" xlink:label="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermDebtCurrent" xlink:label="us-gaap_LongTermDebtCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LongTermLineOfCredit" xlink:label="us-gaap_LongTermLineOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReceivablesNetCurrent" xlink:label="us-gaap_ReceivablesNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsCurrentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_ReceivablesNetCurrent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrent-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Assets-3" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesCurrentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LongTermDebtCurrent" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccountsPayableCurrent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedLiabilitiesCurrent" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrent-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LongTermLineOfCredit" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_Liabilities-3" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_CommitmentsAndContingencies" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquityAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_PreferredStockValue" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquity-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-operations" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementAbstract" xlink:label="us-gaap_IncomeStatementAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestExpense" xlink:label="us-gaap_InterestExpense-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SellingGeneralAndAdministrativeExpense" xlink:label="us-gaap_SellingGeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GrossProfit-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SellingGeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingIncomeLoss-3" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InterestExpense-n8" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss-3" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-comprehensive-income" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:label="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:href="nwpx-20231231.xsd#statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:label="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:label="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details" xlink:href="nwpx-20231231.xsd#statement-note-4-inventories-components-of-inventories-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-4-inventories-components-of-inventories-details" xlink:label="nwpx_statement-statement-note-4-inventories-components-of-inventories-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:label="us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryRawMaterialsNetOfReserves" xlink:label="us-gaap_InventoryRawMaterialsNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventorySuppliesNetOfReserves" xlink:label="us-gaap_InventorySuppliesNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InventoryWorkInProcessNetOfReserves" xlink:label="us-gaap_InventoryWorkInProcessNetOfReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-4-inventories-components-of-inventories-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryRawMaterialsNetOfReserves" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryWorkInProcessNetOfReserves" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventorySuppliesNetOfReserves" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryNet-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:href="nwpx-20231231.xsd#statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EquipmentUnderFinanceLeaseMember" xlink:label="nwpx_EquipmentUnderFinanceLeaseMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress" xlink:label="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress-3" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:label="nwpx_statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ConstructionInProgressMember" xlink:label="us-gaap_ConstructionInProgressMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LandImprovementsMember" xlink:label="us-gaap_LandImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseholdImprovementsMember" xlink:label="us-gaap_LeaseholdImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_MachineryAndEquipmentMember" xlink:label="us-gaap_MachineryAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_LandImprovementsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_LeaseholdImprovementsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_MachineryAndEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="nwpx_EquipmentUnderFinanceLeaseMember" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_ConstructionInProgressMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:href="nwpx-20231231.xsd#statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:label="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherIntangibleAssetsMember" xlink:label="us-gaap_OtherIntangibleAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PatentsMember" xlink:label="us-gaap_PatentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TrademarksAndTradeNamesMember" xlink:label="us-gaap_TrademarksAndTradeNamesMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_TrademarksAndTradeNamesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_PatentsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_OtherIntangibleAssetsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:label="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseLiability" xlink:label="nwpx_LeaseLiability-3" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_LeaseRightOfUseAsset" xlink:label="nwpx_LeaseRightOfUseAsset-3" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PropertyAndEquipmentMember" xlink:label="nwpx_PropertyAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:label="nwpx_statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="nwpx_PropertyAndEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_LeaseRightOfUseAsset-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_LeaseLiability-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-lease-cost-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-lease-cost-details" xlink:label="nwpx_statement-statement-note-9-leases-lease-cost-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ShortTermLeaseCost" xlink:label="us-gaap_ShortTermLeaseCost-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost-1" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-9-leases-lease-cost-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAmortization-1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseInterestExpense-1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseCost-1" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShortTermLeaseCost-1" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_VariableLeaseCost-1" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LeaseCost-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:label="nwpx_statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1-1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent-1" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:href="nwpx-20231231.xsd#statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:label="nwpx_statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseInterestPaymentOnLiability-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeasePayments-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeasePrincipalPayments-n9" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:href="nwpx-20231231.xsd#statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredCompensationPlanMember" xlink:label="nwpx_DeferredCompensationPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:label="nwpx_statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredCompensationPlanAssets" xlink:label="us-gaap_DeferredCompensationPlanAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeAssets" xlink:label="us-gaap_DerivativeAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeLiabilities" xlink:label="us-gaap_DerivativeLiabilities-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="nwpx_DeferredCompensationPlanMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueInputsLevel1Member" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueInputsLevel2Member" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueInputsLevel3Member" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredCompensationPlanAssets" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DerivativeAssets-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsFairValueDisclosure" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DerivativeLiabilities-n9" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:href="nwpx-20231231.xsd#statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PropertyAndEquipmentMember" xlink:label="nwpx_PropertyAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:label="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet" xlink:label="us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationAxis" xlink:label="us-gaap_HedgingDesignationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_HedgingDesignationDomain" xlink:label="us-gaap_HedgingDesignationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestExpenseMember" xlink:label="us-gaap_InterestExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NondesignatedMember" xlink:label="us-gaap_NondesignatedMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SalesMember" xlink:label="us-gaap_SalesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_HedgingDesignationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_HedgingDesignationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_HedgingDesignationAxis" xlink:to="us-gaap_NondesignatedMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeStatementLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_SalesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="nwpx_PropertyAndEquipmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_InterestExpenseMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet-1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:href="nwpx-20231231.xsd#statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:label="nwpx_statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CostOfSalesMember" xlink:label="us-gaap_CostOfSalesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SellingGeneralAndAdministrativeExpensesMember" xlink:label="us-gaap_SellingGeneralAndAdministrativeExpensesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeStatementLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_CostOfSalesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_SellingGeneralAndAdministrativeExpensesMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_CA" xlink:label="country_CA" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2023/country-2023.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:label="nwpx_statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_US" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_CA" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-disaggregation-of-revenue-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-16-revenue-disaggregation-of-revenue-details" xlink:label="nwpx_statement-statement-note-16-revenue-disaggregation-of-revenue-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TransferredAtPointInTimeMember" xlink:label="us-gaap_TransferredAtPointInTimeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_TransferredOverTimeMember" xlink:label="us-gaap_TransferredOverTimeMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-16-revenue-disaggregation-of-revenue-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TransferredOverTimeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TransferredAtPointInTimeMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:href="nwpx-20231231.xsd#statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerAssetBillings" xlink:label="nwpx_ContractWithCustomerAssetBillings" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerAssetOther" xlink:label="nwpx_ContractWithCustomerAssetOther" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" xlink:label="nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerLiabilityBillings" xlink:label="nwpx_ContractWithCustomerLiabilityBillings" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_ContractWithCustomerLiabilityOther" xlink:label="nwpx_ContractWithCustomerLiabilityOther" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:label="nwpx_statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetNet" xlink:label="us-gaap_ContractWithCustomerAssetNet-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerAssetNet" xlink:label="us-gaap_ContractWithCustomerAssetNet-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiability" xlink:label="us-gaap_ContractWithCustomerLiability-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiability" xlink:label="us-gaap_ContractWithCustomerLiability-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:label="us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerAssetNet-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ContractWithCustomerAssetBillings" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ContractWithCustomerAssetOther" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerAssetNet-5" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerLiability-4" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ContractWithCustomerLiabilityBillings" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerLiabilityRevenueRecognized" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_ContractWithCustomerLiabilityOther" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerLiability-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:label="nwpx_statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit" xlink:label="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit-3" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:label="nwpx_statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefit-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CurrentIncomeTaxExpenseBenefit-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit-3" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:label="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:label="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:label="nwpx_statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:label="us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationOtherAdjustments" xlink:label="us-gaap_IncomeTaxReconciliationOtherAdjustments-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationNondeductibleExpense" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxReconciliationOtherAdjustments-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit-3" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredTaxAssetContractAssetsNet" xlink:label="nwpx_DeferredTaxAssetContractAssetsNet-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_DeferredTaxAssetTradeReceivableNet" xlink:label="nwpx_DeferredTaxAssetTradeReceivableNet-2" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:label="nwpx_statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxAssetsNet" xlink:label="us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities-n10" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsGross" xlink:label="us-gaap_DeferredTaxAssetsGross-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities-n10" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesPrepaidExpenses" xlink:label="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherAssetsMember" xlink:label="us-gaap_OtherAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_OtherAssetsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsInventory-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_DeferredTaxAssetTradeReceivableNet-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsTaxCreditCarryforwards-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="nwpx_DeferredTaxAssetContractAssetsNet-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsOther-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsGross-3" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance-n9" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxAssetsNet-3" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-n9" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets-n9" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-n8" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilitiesPrepaidExpenses-n9" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2009/role/negatedTotalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredIncomeTaxLiabilities-n10" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2009/role/negatedTotalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilities-n10" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet-n8" xlink:type="arc"/>
    <link:presentationArc order="18" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredTaxLiabilities-n8" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:href="nwpx-20231231.xsd#statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:label="nwpx_statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefits-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefits-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:label="us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:href="nwpx-20231231.xsd#statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_EngineeredSteelPressurePipeMember" xlink:label="nwpx_EngineeredSteelPressurePipeMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:label="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:label="nwpx_statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CorporateNonSegmentMember" xlink:label="us-gaap_CorporateNonSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DepreciationAndAmortization" xlink:label="us-gaap_DepreciationAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="nwpx_EngineeredSteelPressurePipeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="nwpx_PrecastInfrastructureAndEngineeredSystemsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="us-gaap_CorporateNonSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GrossProfit" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DepreciationAndAmortization" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Assets" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity" xlink:href="nwpx-20231231.xsd#statement-consolidated-statements-of-stockholders-equity" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PensionPlansDefinedBenefitMember" xlink:label="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SharesOutstanding" xlink:label="us-gaap_SharesOutstanding-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_SharesOutstanding" xlink:label="us-gaap_SharesOutstanding-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementOfStockholdersEquityAbstract" xlink:label="us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-5" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_PensionPlansDefinedBenefitMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_CommonStockMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AdditionalPaidInCapitalMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharesOutstanding-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation-n8" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-n8" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-n8" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharesOutstanding-5" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:href="nwpx-20231231.xsd#statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2023/dei-2023.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="nwpx-20231231.xsd#nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:label="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:label="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:label="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeContractTypeDomain" xlink:label="us-gaap_DerivativeContractTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_DerivativeInstrumentRiskAxis" xlink:label="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ForeignExchangeForwardMember" xlink:label="us-gaap_ForeignExchangeForwardMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestExpense" xlink:label="us-gaap_InterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_InterestRateSwapMember" xlink:label="us-gaap_InterestRateSwapMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" xlink:label="us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_DerivativeContractTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis" xlink:to="us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DerivativeInstrumentRiskAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_ForeignExchangeForwardMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DerivativeInstrumentRiskAxis" xlink:to="us-gaap_InterestRateSwapMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherNonoperatingIncomeExpense-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InterestExpense" xlink:type="arc"/>
  </link:presentationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>14
<FILENAME>a01.jpg
<TEXT>
begin 644 a01.jpg
M_]C_X  02D9)1@ ! 0$ 8 !@  #_X0!F17AI9@  34T *@    @ !@$2  ,
M   !  $   ,!  4    !    5@,#  $    !     %$0  $    ! 0   %$1
M  0    !   RP%$2  0    !   RP        8:@  "QC__; $,  @$! @$!
M @(" @(" @(#!0,# P,#!@0$ P4'!@<'!P8'!P@)"PD(" H(!P<*#0H*"PP,
M# P'"0X/#0P."PP,#/_; $,! @(" P,#!@,#!@P(!P@,# P,# P,# P,# P,
M# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,#/_  !$( F\"
M[@,!(@ "$0$#$0'_Q  ?   !!0$! 0$! 0           0(#! 4&!P@)"@O_
MQ "U$  " 0,# @0#!04$!    7T! @, !!$%$B$Q008346$'(G$4,H&1H0@C
M0K'!%5+1\"0S8G*""0H6%Q@9&B4F)R@I*C0U-C<X.3I#1$5&1TA)2E-45597
M6%E:8V1E9F=H:6IS='5V=WAY>H.$A8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJ
MLK.TM;:WN+FZPL/$Q<;'R,G*TM/4U=;7V-G:X>+CY.7FY^CIZO'R\_3U]O?X
M^?K_Q  ? 0 # 0$! 0$! 0$!         0(#! 4&!P@)"@O_Q "U$0 " 0($
M! ,$!P4$!  ! G<  0(#$00%(3$&$D%1!V%Q$R(R@0@40I&AL<$)(S-2\!5B
M<M$*%B0TX27Q%Q@9&B8G*"DJ-38W.#DZ0T1%1D=(24I35%565UA96F-D969G
M:&EJ<W1U=G=X>7J"@X2%AH>(B8J2DY25EI>8F9JBHZ2EIJ>HJ:JRL[2UMK>X
MN;K"P\3%QL?(R<K2T]35UM?8V=KBX^3EYN?HZ>KR\_3U]O?X^?K_V@ , P$
M A$#$0 _ /W\HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBC-
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
MTAG?S OEJ4DOK1=C,&/GJ0",D '44444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !7
MG7[8'B?Q)X)_9*^*.M>#HY)?%VD>$=6O=#2./S'>^CLY7MPJ\[B953 QS7HM
M% 'Y#?\ !%;]E/\ 9K\?_P#!NO9>(?BEX8\'ZGH/B+2M?U;XA>(-0L4EU%7@
MO;T27#SA3.DUO#&IB9#O78CI\S9/(?MA^#O@[\4/^"CO_!-?X7VDND^(OV1[
MC2M7E\+VU]JDVH:-K5Y!:LEE;227#N;G9*EA"D,I;B<P[=LC(?J+XD?\&S?[
M,OQ#\>ZS?0Q_$?POX/\ $VIKK&N> /#_ (JFT_PEK%T'W[Y+-!F,;@,+#)&L
M8 $80  ?0O[6_P#P2\^"7[:W[-VA_"GQMX,M?^$2\)Q0Q>&X]+<Z?<>&O)B$
M,/V.2/!B"1A5"<QD*H96  H ^%O^"TGPJ\$_L\?\%,/V!?%WPYT71_"'Q0UK
MXI6^@W#:#81V=QJN@R26T%\LXB0%XTAG,>6R%2YE'0G'P?\ #7XPV/\ P3E_
MX*@?%?\ :OOOM2^&])_:,^)7P^\6I"3NOH;JUDN],AP >!=6\[GC^!?2OV8_
M8S_X(@_!G]C+X[?\+2@O?B%\3/B=;VC:?IWBGQ_XA?7-1T>V92C16Q*I''E&
M9-^PR!'D4,%D=6H_%3_@@S\!?C)\'OBOX(UR'Q;-I'QB^($OQ+UF1-45;BTU
MB1F9WM6,9$<9#R+M(;Y9&&>A !^*_P#P3V^"]]\'K7]I:[UJY>^\3?$3]B7Q
M%X]UJ\=MS7D^K2&]CD/;<;:6W!_V@>E>D?#S]B;X]_\ !3W_ ()-_ WX0^%_
MV0?AOX)T"[M],F3XW:GXJTFXO&LHRQDNDLX42]B>7@,K&4E-RE<L)$_8[Q%_
MP2$^#WB'XD>//$_V?Q#8W?Q"^%S_  @U"VM-0$=K;:"T21;($*'9,$C4!R6
MQ]WDU[-^S!^SGX=_9'_9\\(_#/PF=0;PWX*TZ/3-.-],)K@Q)G&]P%#-SU '
MTH _G[_X+B_M/?!/]MO_ (*,?&[P1\4OB%<:7H'P%^&UUX3^'8CM;^^34/&[
M/%//-)]DMY!&!)&;.;S-JY@1ESM..F_:_P#VY]5_X*)?L&_\$WO'>FZ?I7CG
MXC6OQ9L/#VL:-JUTBV^L:[9R6T)ANWVE8TO"(9FRI"QW@R#C%?M9^PI^P%X%
M_P"">OP[\1^'? \_B+4/^$O\177BK6M2U[4/MVH:GJ-RL:RS22[5SD1+P !G
M<>K$GQBU_P"""?P*T_XOP^,+67QQ:S6GQ0C^+]II46L*NEV6OK)YC210^5\D
M4C",/&&Y6&)05"@4 ?"'['>F^(/VS_\ @OKX-M_B+\-_A)^RWXY_9CTN_P!2
MD\*^&XF;7/':7D"QHXO(HUM9K*))E< ,9%$TRA&$KM!Y-X/_ &<?#W[5_P"Q
M9^T5X*U#XF^$?AGXPN/VS=6OO [>*+=;C2/$6MQQ)%!IMU$T<@>&47#%@8W4
M%5+(Z[E/[._M'_\ !-?X;_M,_M2?"_XT:H?$&@_$OX2S$Z-KF@WPLKFYMV?<
MUE='8WGVK!IE,3<;;FX7@2MGSW6O^"&'[/GB[]GSXG?#/Q!H.L>(O#/Q4\;W
M?Q$U#[=J!^U:9K5PH4W-E-&JM"44$*/FRKNC[T=E(!\9_LT>+/%GP5_X+(_!
MG2_VLOV:_A?X5^+OBK3M4T;X<_$[X::Q<VNF7J6UG)]H@NM.6<K*&CG91)-&
MIC:6/;$%^>*Y_P &O'P-\ _M'?LI?&7QW\3/"?ACQA\9/%OQ'UBV\>2^(-)@
MN[V)W6&0VCK*K%86:25RN-K.\@.=F%^NOV.?^"''P?\ V.OV@+7XJQZW\3OB
M;\1=*L7TS1M?\?\ B5]:NM!M71T>*U^1%C4I)(F2K,%=P" [[L/]IG_@WR^
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
MB3XD^%? OB?X8Z9<7LCKJB^)G2T>&Y95!<Z=<B2:Y:$#%J\384DFOH?X*?\
M!/[X0_LZQV">#/!\>AQZ7HNH>';2./4;N2.VT^_OVU&ZMU625@%>Z=G!QE!A
M$*H H\9U3]FKX=?"_P#;I^ $>M>*/A?X2\.? _PE<>'?A%X4GU=E\275Q>6]
MOI\A)N9M\T,5I:^3&J"5Y7G9G96A7S #ZH^+NH:MI7PG\3W6@3V-KKUKI-U+
MITUY$TMO%<K"YB:1%(9D#A2P!!(S@U^8/P%_;:_:&^'W[/\ -\3FU+PKXXM_
M!O[+/@3XG>)X-?U&_C_M!\>);J9+6%-R1WUY:VZ":]9B!+9PCR)$<>1^EOP6
M^$1^$OPYG\/76L:AXE6XU35=1:XU*1YY-E]J%S>"VS([L8H5N! @9CB.)!P!
M@<!X&_X)P_!_X=?!O7O &F>&=0;PIXG\%P_#O4K2]\1:G?23^'X3J'D:>)Y[
MAYHXXEU2]2,HZND<B(K!(HE0 ^?OB1_P5N\9:5^TOXMT/PG\-/$/BSPC\/\
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
MZM::3HWAS3_"#:=I_BC5K&RUC1[!&2SL-2AAN4CU*")'D4+>K-E995.5D<,
M<7;_ /!0CQ1<_P#!1F#]F\>']#C\07MJGCB#5I9O+MQX/,?EOOMVE\\:L+X&
MW$.WR_))N21M,%?7%>,>(?V"/AKK4^J:A'HMU;^(-2\3MXU_MA=9U%+Z/6#8
MG3UG$\=RDZPK9G[-]F25(?()B"JAQ7H7P9^'7_"G_A!X5\)G5]6\0'POH]II
M!U35)S<7VI?9X$B\^>1B2\TFS>[$DEF)[T =+1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
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
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1103B@ HHS03@4 %%&>:* "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH *\]_:WU+5-(_95^)=UH7B[
M1?A_KD/A74WTWQ/K$J0Z?X=NOLDODWUP[JR+##)MD<LK *AR".#Z%577="L?
M%&AWFF:G9VNHZ;J,#VMW:74*S0743J5>.1&!5D9205((()!H _$S]C'XRIX3
M_8-^*6A_$[XY?M(?#^\\%>.8-8\1V]IXI@\2W7BFWN-8UJRM]+\-ZI"!J&_4
M+K3F25PZNTEL\L8ABN97.M\:?'G[17@W]GSPQX-^(GQ+^)O@3Q3\-?V?_'GQ
MAMKG3O$RC5=2U?3M1C&CZ=JUW&BKJ!M+&6)+B+;LGE+M)YF U?HUX;_X)&?L
MU>&?@U-\/8_@O\/KCP=<:_/XGDTNYT:"6!]0E>X83,"OS>4ES+#$#D10E8TV
MHH V]7_X)E_L\^(/AIX7\&ZA\$_ACJ'A/P7=SWNA:3=>';::STJ6>3S)S#&R
M$*)7PSJ/E<@;@<# !^;FD?MI?&+Q-^U)X'^*%YXV\9:;K6I?&_P/\++OX>K>
MLGAZWT+5O"L&H7DIT\8#7#7%Q/<+<R;I$6W"*P12M?L3KVJRZ-IYFAT^\U)]
MP7R+7R_,.>_[QE7 ^M</=_LC_"W4/VAK7XM3_#WP;-\3[*V-I!XI?2(&U:&(
MQF(A;C;O!\HM'NSN$;,F=K$'T2@#/\+>([?Q=X=L]3M5E6"]B$JK*NUTSU5A
MZ@Y!P2.."1S6A7*_!/\ Y)9HW_7$_P#H;5U5 !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 445Q_[0GQ=A_9^^ ?CCQ[<:9J&M6_@GP_
M?Z_+I]@H:[OUM;>2<PP@\&1Q'M4'^)A0!V%%?GO^SG_P6U\2?$+_ ()]>-_C
MIXF^#MSJ$&BZM?6/ANU^'^LKXGM?$@BEN@%>6.,26"VZ6^;BYNHHX3&4G0D2
MB!)OVDO^"XTWP#_9J^"WQ#C^&^BS#XM?#9_B.]MKOC=-#MK<):65S_8]A</:
M2?VCJDGVS;#;*D32B)F&.0 #] J*^(]:_P""R4>C?M7Z?X/E^&NH6_P[NO'F
MC_"VY\6W.L+%?6GB;4M+_M&&T_LP0L?)C#P02S-<(5FE(6-U0L?MR@#E?@G_
M ,DLT;_KB?\ T-JZJN6^"@Q\+='_ .N1_P#0VKJ: "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH ***,\T %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !6%\4/"NH>.OAMX@T72=>O\ PKJF
MK:=<6=GK-C'')<Z3-)&RI<QK(&1GC8AP'!4E0""*W:* /@O]A3_@C[X@_9W^
M#?[0UGXR\:>%]0\<_M 1:EI>HZGX>\+II=C'"]WK,EM?RVZRYFNY%U9WD7>J
MQHD%LA*VXFDR_C__ ,$/=4^*/P.^%OA+1/B9X?MKKP#\&KCX+7USXD\%G6[*
MZLKBULX)-5L;47L/V'4 ;0,LGF2C:RHV0F6_0BB@#X0M?^")R:7^T#X:U2'X
MF7EU\+]!\<:%\2YO#=_HYN-:O?$&CZ,FEV\[:K]H ,4OE07,Z/;,SRQ':Z+(
M0/N/7O#FG^*M.-GJEA9ZE:,P<PW4"S1DCD':P(R*N44 <G\"K>.S^$>A0PQI
M%##;^7&B+M5%#$  #@  8Q765ROP3_Y)9HW_ %Q/_H;5U5 !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 44R6X2")I)&"1H"S,QPJ@=237S5\?O^"P'[/'[.IGM]6^(V
MDZQJ4(8&PT -JTV\'!1FA#11O[2NE<^(QE##QYZ\U%>;2_,Y<7CL-A8>TQ-1
M07=M+\SZ8HK\]8_^"R_Q0_:#VK\!_P!F/Q]XHT^\7%IKNOM]@L2W'4HK0,/^
MWI<"G1^%_P#@HI\<HXY[GQ%\(?@Y#(<26UM"EY<HO0XW1WBD_24?45Y?]O49
M_P"[PG4\XQ=OO=E^)XO^LV'J?[I3J5?.,';_ ,"ERQ^YGZ$4,<"OS[;_ ()*
M?M >-9Q<>*OVS?B0KRC][;:);W%C&#W :.\1<?\ ;,5-_P .(1JGS:M^T9\>
M-1E/)<ZR 2?7Y]Y]>_>G_:&/?PX5_.<5^397]J9G+X,$_G4@OR<C[^HK\_Y/
M^"(/BC0(RWA?]JKXZ:'<=G;5)I%S[K'/%GZ9J"3]C#]M_P" <2-X$_:0T'XB
M6=O\SV?B[3/*DN,?PAW6Y?)Z?Z]/K1_:>+AK5PLK?W91E^%TP_MC'4]:V"G;
MO&4)?AS)_@?H/17YW/\ \%:_CA^R:P3]I#]G?6=-T>+F?Q1X/<75A$"<+E3)
M)"">OS72-_L=A]6_LN?M_P#PB_;%LE_X0'QKI>K:CY9DETF8FTU.$ #<6MI0
MLA5<X+J&3/1C6^%SC"5Y^RC+EG_+).,ON=F_E<Z<'G^!Q-3V,9\M3^62<9?=
M))OY7/9** <T5ZA[(4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1103B@ HKB?C!^T)X5^!VF^=KVI)%<,F^&RA'F74XY^ZF>!QC<Q"Y[BO(5\5
M_%O]J@8T.W;X;>#Y^FH3Y-_=1GNG1N>"-FP=?WC5\=G7&V!P6(^H8=2Q&)Z4
MJ2YI+SF](TX^<W'3:Y]!EW#>)Q-+ZW5:I4?^?DW:+\HKXIORBGYV/4OC%^T]
MX/\ @=$RZUJB-J"KN73[7$UTP/(RN0$!'0N5![&N4^$7QA^(_P 9/B)87_\
MPB</AGP$OF&9[\G[;> QMY93.#@N8SPFW&[YVXK;^#G[(?@_X.RQWL-FVL:Y
MN\QM3U'$TP<\ED&-L9SGE1NYY8UZBHXKCP66\1X_$0Q>:UUAZ<6I*C1U;L[I
M5:LE>2Z2C",4UI=G1B,9E&%I2H8&DZLVFG4J:6OI>%-/3R<G)^28M%%%?>GR
MX4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 56UC6+3P]I%
MUJ&H75O8V-C"]Q<W-Q*L4-O&@+,[NQ 554$DD@  FK->=?M?>#(?B/\ LG?$
M[P[=>&]2\96OB#PGJFFSZ!I]XMG>:W'-:2QO:0S,0L4LJL45V("LP)( S0!G
M?!']N?X._M(_"SQ!XX\#?$OP9XD\(^$YKN'6]6M-4B^RZ3]E:03/<.Q BC"Q
M-(LC81XMLJ,T;*YF^('[;/P>^$OPT\,^,O%?Q1^'_A?PGXTBAGT'6-7U^UL;
M+68YHUEC>WEE=5D5HW5\J2 IW' YK\I?^">/[,^I?M5_\$YOVGO"_BOP#XQ\
M3> ].O-6O? T_BCPJV@>+-:U>UOM?/\ 9NIK;2*=6:SF^QR8E@6)+VZNH%1S
M:C9!^TO^S1\7O"W[.7[*FN6^@?%V./1OV8+CP(^C^'/ =OXGNM.\2/IFG.FG
M:MIM[9W(AL[PVYMKAC$G$+0RR11R-D _76Y_:C^&MG\<;/X8R_$#P7'\1M1M
MC>6OA=M:MAK%S"(VD,B6N_S67RU=\A?NHS=%)'>5^,ND?LQ?&;4OVJ?!OA36
M?A7KVA^-[KX[>!?BQJOB'2-%D7PEIVAV'A.&UOK"'44W0H+:XBN;**U9PY29
M"BLC;J_8SQ#;ZE<Z:RZ3=V-E>;AB6[M&NH@.XV+)&<GL=W'H: ,/X)_\DLT;
M_KB?_0VKJJY/X%B1?A)H0F:.286^'9$**S;CDA220">Q)QZGK764 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !116'X_P#B7X=^%'AB?6_%&NZ/X;T:V($M]JEY'9VT9/0&20A03Z9YI2DH
MJ\MB9245S2=D;F:,U\(_%O\ X+N^!;CQ4WA3X)^#_&'QS\9.#Y5OHME-!9
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
M75H]C*LAQF87EAX^Y'XIR:C"/^*3T7IN^B9[7\0/B3H?PNT-M2U[5+72[->
MTK?-(W7:BC+.W^RH)KPJZ^/_ ,0/VF+F2Q^&6CR:#H.XQS>(]24*2.A\L88
M]1A0[<C/EFMCP!^Q5'J>NKXB^)>KR^-_$#8/DRD_8+?G.T*0-Z@YXPJ<_<[U
M[K9VD=A;1PPQQPPPJ$CCC7:L:C@  <  =A7S?U/B+/M<;)X'#/[$&G7FO[]1
M7C33_EIWETYT>Q]8RC*],,EB:W\TDU2B_P"[!V<_6=H_W6>2?"#]C;PW\.M1
M_MC5WN/%WB>5_-EU/4_WF)/[R1L6 /3YF+N#T8#BO7]E!;%>"_M/?\%-_@C^
MR)]IM_&'CK2UUJURK:+IK?VAJ0<#(5X8LF'/8S%%]Z^JRW*<IR+"^QPD(T:>
M[Z7?>4GK*3[MMON?+9WQ!4K2>+S2OY7DTDO)+1)=DDEV1[W1FOSNB_X*F_M
M?M?NL?[.?[/NI0Z'<8:'Q7XV;[/9R1'@NB!XXF*]?W<\Q_V#T/HO[*?['G[2
MEI\?/#_Q%^-GQ\;6(]%^TAO!OAZ!X='NQ+;RQ()BH@1_+,@<!H'.^-3OXR=J
M.<QKS4<+3E.+?Q6M%+O>5K_),^8H<00Q-2,,'2G4BVKSMRP2ZN\K7M_=3N?9
ME%%%>P?0!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !01D
M444 &,BDVBEHH "N:*** .5^"?\ R2S1O^N)_P#0VKJJY7X)_P#)+-&_ZXG_
M -#:NJH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BC/%<#\;?VI/AU^S;IHNO'GC;PSX462,RQ1:C?QQ7%RHZ^5#GS)3P>$5CQ
M45*D*<>>HTEW>B,ZM:%*+G4:BEU;LOQ.^I"V#7P5XV_X+[>!?$/B";0?@O\
M#[XB?&WQ"@#1Q:3IDMK:NO<DLCW"@>IM]O4YK)^U_M^_M;L?*A\ _L[>&[@Y
M5I"M[J[PMV_Y;G> >ZVS#'8UXTL_PTGRX92JO^XKK_P+2/XG@RXFPDGRX-2K
M/_IW%M?.6D/_ "8^^/&'C?1?AYX?N-6\0:MIFAZ5:C=/>ZA=):V\(]6D<A1^
M)KY)^.O_  7:_9_^$&I-IFCZYJGQ(UUI/(BL/"ED;M99#]T+<.4@<$\?NG<^
MQZ5R'@__ (('^#_%_B*WU[XW?$KXC?&S78<@G4M1EL[,J>=H4227" >BW"KC
MM7UM\#OV3OAK^S1I_P!G\ ^!_#7A;,8BDGL;%%NKA1T$LY!ED^KL31SYK7^&
M,:*\WSR^Y6BOO9/M,[Q/PQA07=OVDON5HK_P)GQBW[2O[;W[:0,?PX^%VB?
M7PS=<)K?B]S)J2@=Q%+'N 8<@?8V'I)W.OX _P""$N@^-O$]OXH_: ^)/C?X
MW>)(\D0W=[+9Z; &P3&JAVGVJW0)+&A'_+,=!]F>/OCEX1^%F\:]XATS3YE
M/V=I?,N"/41)ES^"UY1??MRW7CJZDLOAQX(USQ5.K;#=S1F"UB/8G&>/9S'7
MRN;9UP]@*OLLUQ7MJW2GK.5_*C33?WQ^9[V6^&N+S&/UC$QG6BM>:HU&DOOY
M:?WW9ZW\)/@KX/\ @1X671?!?A?0?"NE*03;:78QVJ2-C&Y]@&]SW9LL>I)J
MI\2_V@_!GPE#KKGB"PM+I!DVJ,9KGV_=)EP#ZD >]>4'X,?&7XU#=XP\96_A
M#3)>6TW1!^\QW1F5AQCUED'M79_#3]BSX??#8I)'HRZQ?*=WVK56%RQ/KLP(
MP?<(#[TX9YQ%CUR9/@%AZ?2>(?*_E1@W+TYI4S["GD^28"*CB\1[1K[%!:+_
M +B22BO^W8S..?\ ;$\5_%5V@^&/P_U+4HF.U=4U3]S:@CKP&"'UYE!_V:#^
MR[\1?C%\_P 1OB!<6]C)]_2=$'EQE3_"S85,C_:23_>KZ(CA6)%50%50 % X
M IU5_J'/&Z\08RIB?[B?LJ7_ (+IM.7_ &_.97^M$<-IE.'A1_O->TJ?^!3N
ME_V[&)YK\.?V2/A_\,O+>Q\.6=S=1@8NK\?:I<C^(;\JA_W M>D[1C&*6BOL
M<KR? 9;2]AE]&-*':$5%?@E?U/G\;F&*QE3VN+J2J2[R;;_$,8HHHKTCC"BB
MB@ HHHH *,<T44 &WFO.?BM^RKX'^,/G2:IHD,-_-DF^LO\ 1[DD_P 3%>'/
M_70,/:O1J*\_,\IP68T'AL?2C5@^DHJ2^Y]?/<Z\%C\3@ZJK82I*$EUBVG^!
M\M^._P!EGX@^$/!]]H>F:AI/Q.\$7T?E77ACQ/;)<)+&""$Q(=I"X!&UXP"
M0I(%?#MW\(_&O["_Q'O/$W[/FJ:S\/=1E<3ZM\-?%<DEUHNK '_EA-(5/("@
M>=L=5W;;O!"']ACR*R/&/@+1?B%I+6.N:78ZK:'D1W,*R!#TRI/*M[C!%?G>
M.\.\3AK5.'\7*ER_#3J7J07E"3?M::\E-Q_N'?F6*RS.K//,,G46U:E:E6CY
MW2Y)>:E'7JSY._8C_P""RW@']IO6K?P?XRMYOA;\4 ZV\FA:RYCM[Z4G %K.
MP4,S97$4@20EL*) "Y^QRP!KY(_:._X)'>!?C1I<L=G';JN&\NRU6+[7!'GM
M'+_KH<]V#,:\S\(>(_B]_P $VI+;3M<UY/$WP_B*PPZ?XBU9+IK1/NJMI?G_
M $B)!E0$N4F&%")Y><T8/C3-\K?L>*,'*,5_R^I)U:?K+E7/%>;@E^9EA>&\
M1/W<#B88E=%*U&MZ2A)\DGYTYMOI!'Z"45Y'X/\ VX/ASXITQIKK7H_#TT4?
MF30:NOV5H0.N7.8S_P !<UP/B+_@LS^RGX4N)(;W]H#X6K-"Q5XXM=AG9&&<
M@B,L01C&#WK](R#,<+GE/VN35%B(]?9OGMZ\M[>CLSGS#+<5@9^SQM.5-_WD
MU]U]_D?35%?(,_\ P7O_ &/;>5D;X]>"BR_W?M##\Q$0:DM/^"]/[']Y)M7X
M^>!U[_O'GC'YM&!7T7]@YGO]7J?^ 2_R/.]K#NCZZHKYM\/?\%B?V5?$X'V7
M]HCX.Q9./]+\4VEG_P"C76N_^'_[<7P6^+5]#;>%/B_\+?$UQ<-MBBTGQ787
MLDI]%6.5B3]*Y:V78NDG*K2E%+>\6K?>BHRB]$SU.D+8->8>/OVQOA[\/DD6
M;7[?4[J,'_1M+'VQR1U&Y?D4_P"\PK@Y/VA/BI\;#Y/@/P.V@:=+PNL:[\OR
MGHZ*0%_[Y$P]J_/<P\0LDPU5X6C5=>M_S[HIU9_-0NH^LW%>9]-A.$\RK4_;
MU(>RI_SU&H1^3E9R_P"W4WY'OGB;Q3IO@_1Y-0U2_L]-LH?OSW4RQ1K[;F(&
M3Z=Z\-\2_MK7'C36)-#^%OAN]\7ZHORM>RQ-%8VV>C-G:2.HRYC7T8]*=X<_
M8@_X2S68]8^)GB?5/&FI+RML)6ALX,]57!#;<\_)Y8]5->W^&_">F^#-'CT_
M2-/L]-L8?N06T*Q1@]SA0.3W/4UP6XISG1VP%!_X:E=K\:5._P#W$DO)G5_P
MAY=JKXJI\X4D_P )S_\ )%ZGA&@?L=:U\4=8AUKXM>)+G7IT.^+1[*0Q6=M[
M97;VX/EA3D<N]>\>&_"^F^#M%AT_2K&UTVQMQB."VB$<:>O [GN>IKP?]IW_
M (*J? O]DO[9:^*/'>F76N6>Y7T71S_:6H+(/^6;I%E86/\ TW:,>]?.)_;_
M /VI_P!NK]Q\ /@\/AWX3OOEA\:^-\*6B;[L\,3#RSCD'RTO!].W7E.6Y%D<
MY+!Q=2O+XI:U*TW_ 'YN[^3:BNB1\;G_ (@?69K#5:G.X_#2I1NH^D(^['UE
M9]V??GC_ .(_A[X4>%KC7/%&N:/X;T6UQYU_J=Y':6T6>FZ20A1GMSS7Q/\
M%3_@NMX5UKQ9)X1^ O@?Q=\=/&##"C3+.:WTZ'DJ79S&TS*K8)81",C_ ):@
M<U4^'_\ P0XM?B;XIM_%G[27Q,\6_&CQ*GS+8F\ELM)LMW+1( WF[ W(\HP(
M>\=?:_PK^#/A/X&^$XM!\&^&]$\+:/"=PL]+LX[6(M@ NP0#<YQRS98GDDFO
M<OF>*VM1C\I3_P#D5_Y,?/7SC&;6P\/.TZGW?!'_ ,F/A!?V.?VP/V\%\[XT
M?%*S^#?@^ZYD\)^#!F[E0\-%++&Y&&7^_<7"YZQBO??V8/\ @D5\!?V45M;C
M0_ ]GKFN6H4C6?$.-2O X.1(@<>5"_O#''7TP!@45OA\DPM.7M9ISG_--\S^
M5]%\DCHPO#N"I3]M43J5/YIOF?ROHO\ MU(-M&***]<]T**** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "N!_:JUOQ!X;_9A^(U_P"$
MM:T'PWXLL_#&I3:)JVMS1PZ9IE^+60VT]R\@*+ DVQG+ J%!R".*[ZLWQEX.
MTGXA^$=4\/Z]IMCK.AZY9S:?J.GWL"SVM];2H8Y898V!5XW1F5E8$$$@\4 ?
MDG^Q%^U!^T-J?_!//]HK3++XA>,K/XU?#FZU;4-8'Q3L(-6D\)V0N]<C:YTB
M\LU2#5<S:=-;Q!RMO#<64X"&W6*%\'_@H=_P6;\6?!3_ (),_!3PWX8^)VD^
M&?CUX\^"NB_$;6O$6K2Q1WHM3:6JL+-)!LGU"_O&>-416\N&*]E(0QQ$_HM^
MR?\ \$L_@C^Q;\%?&/@'P+X/BM/#_CY[Q=>-S</<7FHVT[3[+-[@GS3;P17$
MD,*;LHA+9:1Y)'[CQ-^QM\-/&7[*T?P2U+PM;W7POBT"V\+IHANIU5=-MXTC
MAM_.$@GPBQ( WF;_ )<EB<F@#\\O&/\ P48^)&H?MGZ7X\\+_$BXU+X;ZA^T
M!X9^#>F>$+:*PN-!U?0-6\/PWS:LLRPFYDG>6X2ZAFCG">5'MVNC-7ZGZ]KL
M?AW3S<S0WLR!@NVUM9+B3GC[B MCWQQ7E&I_\$_O@[K/[6$/QPN? FER?%""
M.-1K0EF7S'CA:WBN)+</]GDN8X':%+AXS,D9V*X7"U['0!R?P+F%Q\)-#D57
M59+?> Z%&&6)P0>0?4'D5UE<K\$_^26:-_UQ/_H;5U5 !1110 4444 %%%!.
M* "BN-^/'[0O@?\ 9A^&M]XP^(7BO0O!OAK3Q^^U#5;M;>(M@L(TW',DK!3M
MC0,[D852>*_,SQG_ ,%T_C5_P4.\8:EX(_83^#^H>(K&UG:ROOB=XMMS::+I
MQZ,\44FU P5XY4$[&4KD?9&KV,LR'&8Y.I2BE3CO.3481]9/3Y*[[(SG5C'1
M[]C]/_BW\:?"'P#\#W/B;QQXH\/^#_#MF0LVI:SJ$5C:QLWW5,DC*NX] ,Y)
MX )K\[?C!_P<^?#'5?&TG@[]G;X;?$S]I?QFHWI;^'-*GM+!E!Q(3(T3W.%_
MO+:M&1SOQS6?\&_^#;J/XV^,[;XA?MF?%KQ;^T-XZPSC2$U">Q\.Z5O^9X80
MI29HQ)\RB+[+'C@PFOT:^"WP$\$?LY>"(?#?@#PCX;\%Z# Q==/T33HK&W+G
MJY2-0&<XY8Y8GDDFO3Y<CP.DN;%3\KTZ?W_'+_R0C][+^ZOO?^7YGYHQ:_\
M\%6OVSCYVGZ?\'?V7-!=Q) ;WR]2U66!L<,&6]'F 'HT=N<CHIYJU!_P;^_'
M[XJ7+7/Q4_;W^-FM1WBAKG3/#_VC2[1'[A1]L:(KZ8@3Z5^J6VBI_P!;<53T
MP=*G17]VG%O_ ,"FI2_$?U>+^)M_,_+=O^#4WX5WG[Z\^//[3EU>]?//BFSZ
M]0<&S)Z\_>J"^_X-POB%X(AV?#']N;]H[P4H8$1W>HW%]"<'^)(;JV5OQXK]
M3Z"<4O\ 7+.?M5K^3C&2^YQ:#ZO3['Y4R_LN?\%1OV4;C[1X,^/'PL^/F@Z:
MN8=(\6:8MC?7Q]&?RE?M_%?#K^-5_P#B(+^-/['#+;?M<?LC^/\ P/8VH6.[
M\6>#R-2T=I6X55WL;=1]+Z1L=%/?]7<C\NM?.'[1'_!6/]GW]FZ.XM]?^(NB
MZEJ4096TS0V.K76\=8W$.Y(F]IF0>]88CBS!*/-FV&I-?S+]U+[XVBWZP9RX
MK$4,+#VE:JH+^\U;\0_9 _X*Y?LZ?MU&VMOAO\5/#>J:Y=8":%>RG3=7+;<L
MJVEP$EDV]"T2NF>C$8-?1V_FOPE_:S_9C\!_\%<FN9_@C^Q%J&@W6I*7M_'Y
MF7PQ$^YMSRF&(I87$AZEGDF?G[N2*W_C-_P2G_;V^%?[*EAHOACX@7GQ(T^U
M4K/X33XB7PNXX2J 1J]TL<4\:JI'DF940@>6C[CCP<1F&68V4(Y JDY2=K5%
M"$%Y^VE*,6O^W3Q5Q+*KI@:$ZW]Y+EC_ .!3M?\ [=YC]5_V@_\ @H;\%?V6
MGN(?&_Q&\.:5J-L<2:9#.;W44],VL >90?4H![U\NWG_  6V\2?M 7DFF_LY
M_ /QY\2)-[6_]M:G%]ATJVDSP69-Z[3Z2S0'KTQ7RM_P2W^,?[+?A;XB0_#_
M .+'[+GQ)^%_Q>L=BW)\;Z'>>)K [F BFW>0J6V[E_->SBB51GSF'-?I_P"(
MOV[OASX/BAL=)DU#6VC @AMM*L2L:X&%52^Q2 , ;,\5\=Q1F53(ZOL<_P 7
M2PCW45*,I-/^5MVEZQB_(]K+>'.*,Y7-AX\D?^G<'-KUG)**_P# ?F?,8_97
M_;>_:]'F?$CXQ:#\$M!N@';1O!<+27T)[H98G5QD<9%Y(/\ 9/0]]\$?^"$/
MP"^%>J?VMX@TO6OB9X@DD$\U]XIOVN%EDQ\Q,$82*0$]I5D/^T>M>E#]HCXN
M?$8[?"?PO;2H2>+K792@*G^((WE?^.E_QH/P"^,?Q'&?%/Q,30[=N?LNAPE3
M@]5+J(C^9?\ &ODZ?$&#Q,N?+<!B,9+I.<7"'_@5=PC;_#%GN4?"_ T)*KG&
M(I\R_P"?E1UIKTA#G2?RB>KV2^!OV=_"EOIMLOA7P1HD&3!9P+!IMLG^Y&NU
M>W0#M7G_ (N_;^^'V@W'V?3KC5/$5XQV+%IUFQW-V :38&_X#NI/"?\ P3^^
M'^B7)N=4BU;Q)>.=SS:C>-\S=SB/9D>S;J]8\)_#S0? 5N8M$T72])C8886=
MJD._ZE0,_C7L1CQCC%RQ5#!P_P"WJ\U_Z:@O_)D>]&/#F$7+'VM=K_#2A_[?
M*W_@/R/$!^T!\8/B0=OA3X9KHMNW'VO7967Y3_$$;RC^6_\ &D/[-/Q4^)WS
M>-/B;-I]JQ^:QT-#&C*?X2P$8_[Z5_QKZ'*@TH&*?^H$<5KG.-KXGO%S]G3?
M_;E)0NO*3D5_K4Z&F78:E1[/EYY?^!5'*S\TD>0_#_\ 8=^'?@%ED_L7^V[I
M3DS:M)]IW'WCP(OQV9KUBRL(=-MHX+>*.""$;4CC4*B#T ' J:BOJ<GX?RS*
MJ?LLMP\*2_NQ2OZM*[]7<\/,,VQN.G[3&595'_>;=O2^WR"BBBO8//"BBB@
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
M2CW2;C_X$KK\2HUH2V9](44V.998U=65D8!E8'((/<&G9KPS0**** "BBB@
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
MVV&&R\/6OE3'TW174KC_ +]DU4>#<[DK_59I=VN5?>[!]8I_S'ZI45^5:?\
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
MU$1=JJ/0 <5)C-%%?;I)*R/"NWJPHHHI@%%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %!YHHH KZ;I-KHUNT-G;P6L3RR3LD,8C5I)':21R!QN9V9F/4LQ)R2:L444
M %%%% '*_!/_ ))9HW_7$_\ H;5U5<K\$_\ DEFC?]<3_P"AM754 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110!\B?\%Q/B=\:/
M@[_P3O\ &'B+X'-/:^(-*'VK6K^RCAEU+2M&CBEDN[BR28B,SKLC!)RR1-,Z
M R(E?#W[6_\ P5M^,7P_^$GP[D^'?Q9\2>-KS1_ 7B;Q/XEO]*^%]O;ZW'?Z
M3JT5G_Q4^DW0+:7ID(^T07,UGMF::WFDBC6/8H_3G]NW]AKP'_P4-_9WU3X<
M^/[*>:PNBUUIM_:S-!?:#?B*2.&^MI%(*S1B5\ Y1U9D=71V4^;>-O\ @BW^
MS_X^\):/I%YX?\56RZ9I^I:/>7MAXRU>SU+Q'8:E=&\U&SU2[BN5GU"&ZNF:
M:1;AWR[,05W," ?-/Q2_X*6?&'1/VZ5U71_&'A^X^$^G?&3P7\'5\)6^E6\M
MOJ\&N:5%=3ZQ]O.ZX:59KR(P"-DA:&'YD=G+5^FVO:];^&]/-U="Z:(,%Q;V
MTEP^3P/DC5F_'&!7ANK_ /!,'X*:W^TWIGQ:F\)2+XJTFYL]0@MX=3NHM':^
MLK5K.QOGTY9!:/=6UJ[PPS-$6C1OE(*J5]^H Y/X%SK<_"30Y4W;)+?>NY2K
M8+$C(."#[$ BNLKE?@G_ ,DLT;_KB?\ T-JZJ@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BO!?\ @H]_P4 \+_\ !-G]FF[^
M(GB73-4UZ26[CTG1]'TXHD^K7\B221P^9(1'"@2*61Y'/RI&VU7?9&_$^-?^
M"MF@^#-*\(VZ_!_X\:QXX\5:+J7B.?P+I_ANW;Q-H.G:?="TN+JZM9+E 8S.
MRI#]G>9KG>AA616!(!]845\M^*?^"N7PT\(?M8VOPGO-'\>))-KVD^$KGQ2V
MDI#H.G:[JMD]]8:5,TDJW/VF6%4^Y;M'&\\22.CL5'U)0!ROP3_Y)9HW_7$_
M^AM755ROP3_Y)9HW_7$_^AM754 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110!\M?\%E/V<OB!^U5_P3^\;^#?AOH?P_\5:]J%K(
M9-"\76)N+?5X1!*/+M)=ZK:Z@DC136UPX9%FA0-L5S(GQ)\8?^#?OXD^-/A_
MX=D^Q_"7QSX@_P"%?>*OAXFF^,M<U#4+3X=V^HZE->:/=:3?SV<]S=3:5'.]
MNDDZ12,BKM>/C;^P%% 'YO:__P $@OBKJ/[4FDR2>+O"FL?#*3XF^#_BQJ^N
MWMQ<KXGEU+0-(CLI+7[+Y302K>W-M:SF<W,9B5[A?+D.PG]$_$&@0>)=.-K<
M27L<3,&)M;R:TDR.1\\3*^/;.#WJ]10!R?P+A6V^$FAQJ9&6.WV NY=B Q'+
M,26/J223U)-=97*_!/\ Y)9HW_7$_P#H;5U5 !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 4?%/BG3? _AG4=:UK4+'2-'T>UDO
M;^^O;A+>VLK>-2\DTLCD*D:(I9F8@* 22 *F?6+2/2Q?-=6ZV3()1<&5?**'
MD-NSC!R.<XKX#_X.9_#OA_Q%_P $K_$7_"2>(/$'AJSL-4M[VVNK+09-9TV>
M[CAN#;VVJ0KPEG-+LB$SD)#<R6DASM"M^>?[?WQ!^(_Q,_X(S:%H&B_!74_!
MOP'\,V5YK%YJG@#4HF\*>)-5'B=K>T,4-].E\NB.OFZA#&L<FZ2ZL H2&W+.
M ?T&FYC6X6$R()G4NJ;OF900"0/0%AD^X]:?7XD_&^]F\6?\%>-/O)?#^N:'
M^T-J?QV^'NLZ#97=N/[=TWP&WAW&JPQRQM)%]@CSJ<-Y]FEDMS<*X9G;8Q_:
MCQ!/J5MIQ;2[6RO+O<,175TUM&1W)=8Y#D>FWGU% &'\$_\ DEFC?]<3_P"A
MM755R?P+:1OA)H1F6..8V^75'+JK;CD!B 2,]"0,^@Z5UE !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 4?$_A?3?&_AK4-%UK3
M['5M'U>UDLKZQO8%GMKV"12DD4L; JZ.K%65@002""#5ZBB@  Q1110!ROP3
M_P"26:-_UQ/_ *&U=57*_!/_ ))9HW_7$_\ H;5U5 !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 ?)?_!;/]I/XO_LF_P#!/[Q3
MXU^"^C3ZCXDTYU6_O[?2UU:Y\-Z>T<GG:E%9LRK.T+B+(;<D:,\SHZ1,I^>_
MCK_P4:^-OA7]@3P;\8?!WQ?^ 6OZ6ME>65M>VW@[5[K5?BEXI^W26^E^'K/1
M6FBGLY+B.,BXQ)+/%,LA6&.&)W'V1_P4+_89T'_@H;^S)K/PZUK6-<\-3W0>
MXTG6])NI8;G2+WR)85FVHZ">,QSRQR0.=DD<CJ=I(9?"_'/_  0.^&?B_6O
M.K6/Q+^/7A77OAS!JATS6-#\61V^HRW^JW$T^J:I+.UN[F^O&G99I5*@QI'&
MJJB!: //OB1_P52^,7@W]M6&V_L[P5;?#'2OBUX3^#.K^&Y+26;6&O=<TN&Z
MEU!-0641C[)<W$4*Q?9RLT:R-N1MN/T8U[Q%8^%[#[5J%S%:6P8(9)#A03P!
M^-?-&J?\$BOA=KW[5.D_%K4-2\=ZAJNG7^EZ]=:-=:X9M%UC7--LS96.M7-N
MR%C?16Y"AHW2-BB.\;.H:OJ2@#D_@7<1W?PDT*:)EDCFM]Z,.C*6)!'U%=97
M*_!,Y^%FC_\ 7$_^AM754 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 445\X_MN?\ !3[X?_L)>._!WACQ%I/CCQ1XA\8B2[33
M?">A2ZQ=:9IT3QQS:C<1Q_,MNDDL2?(&D9GPB/AL 'T=17SO>?\ !47X3V'[
M7%O\&I;OQ*GB"XOX-#_M9M NT\/QZQ/9?;X=(;4&00B^DL_WRPYY!VY\SY*^
MB* .5^"?_)+-&_ZXG_T-JZJN5^"?_)+-&_ZXG_T-JZJ@ HHHH **** "BBB@
M HHHH **** "BBH)]3M[6]M[>2:..XNMWDQLV&EVC+8'? YH GHHHH ****
M"BBB@ HHHH **** "BBB@ HHJ#3=3M]8LUN+6:.X@D)"R1MN5L$@\^Q!'X4
M3T444 %%%% !1110 4444 %%%% !1110 45!<:G;VEY;V\DT<<]T6$,;-AI2
MHR<#O@<U/0 4444 %%%% !1110 4444 %%%% !1110 45!IVIV^KVBW%K-'<
M0L64/&VY25)4\^Q!'X5/0 4444 %%%% !1110 4444 %%%% !114%QJ=O:7E
MO;R31QSW180HS8:4J-QP.^!S0!/1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %?G%_P7=_8L^+7[5'C3X3ZA\,?!&DZUJ&C3
M75EIOBO2_$=YX;\5> ]1N$(BOUO(=Z/IHVJ9HO*,@:-"I.XK7Z.T4 ?F ?\
M@E]\<M0_:S\/Z1K2>&=6^'T'QHT3X]:GX_BU40WMUJ%EH$6GW.EG2Q""C37L
M7FHZ2F)()"#\XV5^F6O:0^MZ>8([Z\T]BP;SK5E608[?,K#![\5\P?\ !63]
MLOXG?L5?!;0_$7P[\$Z3KUK=:[I=CKNNZM?(EGX?M[K5;"Q4"V5UGNIYC>,$
M";8XQ%([OE4BEY7]J']M+XX_L^?MU?#/PC;V?PIU;P?\3?'%EX9T?PG;QWDW
MB^^T<V33:IX@:X$PA@AL95&83;2!XP<S([H* /J32/@]_8.FPV=GXG\406UN
M-L<8GA;:,YZF(GOW-6/^%:W7_0V>*O\ O];_ /QFOA7Q[_P5%^-6D^ O!/BS
MP_X+\+ZQX)\>_&Q_!Z^)I9O)M=*T >*4T&V2.W\WS[J^NUCGNEF"I!'$ZD[F
MVHVA!_P52^(#_P#!5EO@S)_P@">&3X\;P>-*_LJ]_M 60\._VF-2_MO[1_9Y
MN3<_NO[+\G[4(_FQM_>4 ?;7_"M;K_H;/%7_ '^M_P#XS1_PK6Z_Z&SQ5_W^
MM_\ XS7544 <K_PK6Z_Z&SQ5_P!_K?\ ^,T?\*UNO^AL\5?]_K?_ .,UU5%
M'*_\*UNO^AL\5?\ ?ZW_ /C-'_"M;K_H;/%7_?ZW_P#C-=510!RO_"M;K_H;
M/%7_ '^M_P#XS1_PK6Z_Z&SQ5_W^M_\ XS7544 <K_PK6Z_Z&SQ5_P!_K?\
M^,T?\*UNO^AL\5?]_K?_ .,UU5-F?RXF8*S;03A>I^E '+_\*UNO^AL\5?\
M?ZW_ /C-5[GX/?;-0M;J3Q/XH>XLM_D.9X?W>\8;CRL'(]<U\E? W]MO]I#]
MH(?M(:';^ _AQX#\?_#/Q'H>F:%I'B'4GO;/1K*]L+.]FGU.XM9 EQ+';W#R
MF*W9$#CRA*X'G-SO[-W_  5 ^*'QP^'GPX5;/P9K6K>+_C%KOA#3M=T*PFBT
M[QWX6T:ROKV;6=.MYKA_(:X:T2R4R7,D0FDWARC+@ ^W_P#A6MU_T-GBK_O]
M;_\ QFC_ (5K=?\ 0V>*O^_UO_\ &:_/?4/^"OOQIT+]G'XD>)/%G@[P)\-?
M$&@?'+2/AC+<:I,^J:+\-]*OK;3)7U'6)H9XH[@P&\:-VCF@@\V6(>9L7<_T
MY_P2E_;ENOV_?V8K[Q9J4GAB\UCP[XHU?PG?ZCX9,AT/6I+&Y:-+ZQ\QWD^S
M3PF*50[L1O(W' ) /;/^%:W7_0V>*O\ O];_ /QFC_A6MU_T-GBK_O\ 6_\
M\9KJJ* .5_X5K=?]#9XJ_P"_UO\ _&:/^%:W7_0V>*O^_P!;_P#QFNJHH Y7
M_A6MU_T-GBK_ +_6_P#\9H_X5K=?]#9XJ_[_ %O_ /&:ZJB@#E?^%:W7_0V>
M*O\ O];_ /QFC_A6MU_T-GBK_O\ 6_\ \9KJJ* .5_X5K=?]#9XJ_P"_UO\
M_&:/^%:W7_0V>*O^_P!;_P#QFNJKY7_X*L?MB_$[]C/X1Z#X@^'O@C2]>L[K
M7M)L=>U[5KU$LM!M[O5["P"K;*ZSW-Q,;PA NV.,1N[OD)%* >_#X:W0_P"9
ML\5?]_K?_P",U7TGX/?V%I\=K9^)_%$-O&6*H)X6QDECR8B>I)KY:_:?_;1^
M.7[/_P"W9\,_"-O9?"G5O!_Q,\;V?AK2/"=NEW-XOO=&^PO-J?B%K@3"&"&Q
ME5<PFV</'D&9'=!7DWQ\_P""G/Q_\$_LV>(/C-X=O/@C8_#^'7?$NG^%H=7T
MS4]1UCQQ=VNMR:7HVB6-K;SQ-Y][':7%R+I?.S]HB'D)'%)*P!^@W_"M;K_H
M;/%7_?ZW_P#C-'_"M;K_ *&SQ5_W^M__ (S7P[X;_P""L?Q'UC]K2UM[G1?!
M5G\)9OC7_P *'GTW[+<R>)+76!H(U%KW[6)_LSVXN=\'EB -L4.'R<5^A@.1
M0!RO_"M;K_H;/%7_ '^M_P#XS1_PK6Z_Z&SQ5_W^M_\ XS7544 <K_PK6Z_Z
M&SQ5_P!_K?\ ^,T?\*UNO^AL\5?]_K?_ .,UU5% '*_\*UNO^AL\5?\ ?ZW_
M /C-'_"M;K_H;/%7_?ZW_P#C-=510!RO_"M;K_H;/%7_ '^M_P#XS1_PK6Z_
MZ&SQ5_W^M_\ XS7544 <K_PK6Z_Z&SQ5_P!_K?\ ^,T?\*UNO^AL\5?]_K?_
M .,UU$\IA@=PC2%5)"+C<WL,\9/O7PS\#_VW?VC_ (_G]I#0X? OPW\ ^/?A
MEXBT/3=#TGQ%J;WMGHMC>V%G>SW&IW%K($N)8K>X>4Q6[(@8>4)7 \Y@#ZVN
MO@]]MO[6ZE\3^*'N+$N8',\/[LLNUN/*P<CCG-6/^%:W7_0V>*O^_P!;_P#Q
MFOAK]GW_ (*?_%WXZ?"WX?QZ98?#O7O%'C'XM^(?".AZU917-CH?C[PYHUAJ
M%XVL6B-)</9I<RVD5EYC27"1R2F1?,4HE7_@'_P4$_:)UR[^-7AB\\+_  N^
M,GC3X5Z7HBS3^!VGT#0M)\07?G_VCHUU=7US.L_]GHD<TLMN3)L=4,"S.(P
M?:W_  K6Z_Z&SQ5_W^M__C-'_"M;K_H;/%7_ '^M_P#XS7G_ /P3D_:#UW]K
M#]@_X2_$KQ/%IL/B#QQX8LM9U"/3XFBM4FFB#L(T9F95R> 6)]Z]JH Y7_A6
MMU_T-GBK_O\ 6_\ \9H_X5K=?]#9XJ_[_6__ ,9KJJ* .5_X5K=?]#9XJ_[_
M %O_ /&:/^%:W7_0V>*O^_UO_P#&:ZJB@#E?^%:W7_0V>*O^_P!;_P#QFC_A
M6MU_T-GBK_O];_\ QFNJHH Y7_A6MU_T-GBK_O\ 6_\ \9H_X5K=?]#9XJ_[
M_6__ ,9KJJ* .5_X5K=?]#9XJ_[_ %O_ /&:!\-;H?\ ,V>*O^_UO_\ &:^?
M_P#@JY^V1\3OV,?A!H/B#X>^"-*UZSNM>TJPUW7M6OD2ST"WN]6L+ *MLKK/
M<W$QNV"!-L<8C=W?(2*7D?VG?VT_CC^S]^W=\,_!\%E\*=8\(?$[QQ:>&M(\
M)VR7<WB^[T7["\VI^(7N!.(8(;*91F$VSAX\@S([I0!]3:3\'O["L%M;/Q-X
MHAMXRS*@GA;!9BS<F(GEB3^-6/\ A6MU_P!#9XJ_[_6__P 9K\^?CW_P4[^/
M_@G]FO7OC/X=N_@C9_#^/7?$FG^%H-6TS4]0UCQS=VVN2Z7HVB6-K;SQ-YU[
M#:3W0NE\[)N(AY"1Q22MZIXV_;6^.WPV_P""@'PW\ ZOIWPIDT/XF>(9+2S\
M%::EW>>*M,\/PZ6TT_B"ZOQ.+:*..^7R3 ;7#!E2.9WRP /K+_A6MU_T-GBK
M_O\ 6_\ \9H_X5K=?]#9XJ_[_6__ ,9KJJ* .5_X5K=?]#9XJ_[_ %O_ /&:
M/^%:W7_0V>*O^_UO_P#&:ZJB@#E?^%:W7_0V>*O^_P!;_P#QFC_A6MU_T-GB
MK_O];_\ QFNJHH Y7_A6MU_T-GBK_O\ 6_\ \9H_X5K=?]#9XJ_[_6__ ,9K
MJJ* .5_X5K=?]#9XJ_[_ %O_ /&:/^%:W7_0V>*O^_UO_P#&:ZJFSR&&%F"-
M(5!(5?O-[#/'YT <O_PK6Z_Z&SQ5_P!_K?\ ^,U-I/PVCL->M=0NM7UK59K$
M.+=;N5"D3.-K, B+D[<CG(Y/&<$?'OP._;;_ &C_ -H&V_:-T:'P+\-_ /C[
MX9^)M%TO1=*\0ZF]]9Z)87EA97L\^I7%K($N9HK>X>0Q6[(@<>4)7"^<W*_L
M^_\ !3_XN_';X6?#V/2]/^'NN^*/&7Q9\1>$M$UFRBNK'0_'OAO1K#4+PZQ:
M(SW#V<=S+:0V7F-)<)'),9%\Q2B4 ?HA17Y[?!;]MW]IKXDR?&7P:M]\!=>\
M7?"FS\/RZUXIT3P_K<OA_P ,W\[32ZYHXM8[B:?5KZQMXE:..WEAW-/$LHBD
M)B/T7_P3'_:H\0?ME_L=Z#X\\56^@VOB"\O]3L+N/2(Y(+<_9;^XMD=K:622
M:TD>.)'>VF=I86<H^&4@ 'OU%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110!YK^UK^RYH/[97P.O? /B:^UK3]'OM1TS4WGTJ6
M**Z66PU"WOX0&DCD3:9;:,,"I)0L 5)##QN^_P""46FR?MTZ]^T#8_&CXW:1
MXP\2/80WMA:WND-I9L+-E:+2XTETYYHK)B"TD4<RF1G9V8R8<?5U% '@-S_P
M3C\"S?LH?"GX.QZAXEM?"_PAO_#VI:3<0SVZWU[/HL\,]NURYA*/YLD(:;8B
M%R[[2F>.67_@D9\.5_:8_P"%B?V]XX^P?\)Y_P +0_X0PW=H?#H\3_839?VK
MC[-]L\W82^S[5Y/F?-Y>.*^IZ* "BBB@ HHHH **** "BBB@ HHHH ^6_P!H
MO_@D_P"#/VC_  G\=]'O/&_Q.\,VW[15_IEYXLDT#4;.VF"6-E;V2VMN\EK(
M8X)HK:,3*V\R9==PC=D.Y^S=_P $Y]%_9Y\9^$->N?B!\1?B!?> =*U71?#P
M\3/IGDZ1::A_98DAACL[*V5$B72HEB50 BW%PN&#*$^B** /GO4O^"=>@CPW
M\3K/0O'WQ0\':E\4O&\/CZ]UC0M6@M;W3;^**RA\F &!H9+1XK*-)+>ZCN$D
M664,#E=O=?LH?LL^'?V/OA%'X1\.W6M:JLNH7FL:EJVLW"W&J:YJ-Y</<W5[
M=2JB*\TLLC,2J*H&%554 #TJB@ HHHH **** "BBB@ HHHH *\Y_:M_9DT']
ML#X)7G@/Q)>:QI^DWVHZ7JCSZ7+''=++I^HVVH0@-)'(NTS6L:L"I)0L 5)#
M#T:B@#Y1OO\ @E!IDG[=.O?M V/QH^-VD>,/$CV$-[8VM[H[:6;"S96BTN-)
M=.>:*R8@F2*.93(S,[,9,..7\;_\$/?!?B:X^"4NC_%CXU^"7_9_\*IX5\)?
MV%?:0JVX\KR9]1<7&G3#[?<1[5EFCV A!M5,MN^UJ* /EWPW_P $F_ /AW]I
M>S^);>)OB!J#VOB(>-6\-75[:?V#<^)/[,&F-K<D*6RRF\:W!)Q*(M[%Q$#7
MU$.!110 4444 %%%% !1110 4444 !KY;_:-_P""3W@O]I+PK\=]'O/&_P 3
MO#-M^T5?Z7>>+'T#4;.VF"6%E;V2VMN\EK(8X)HK:/SE;>9,NNX1NR'ZDHH
M^7_AC_P2[TKX:VFG%_BQ\7=>U3P[X:USPKX;U34+C2([OPK:ZK'IL;M8BVT^
M&*&2W&EP_9\QLD?G3@JZLJI)^P9_P2[T'_@GS\-;[P7X9^)GQ6\3^#[JQDLK
M;1_$=UIDMKIAEDDEEN(?LUC YGD:1RSRM(6)YR:^G** .!_99_9UT7]D;]G/
MP7\,?#=WJM]H/@728-&L+C4Y(Y+R6&%0JF5HT1&? Y*HH]A7?444 %%%% !1
M110 4444 %%%% 'F_P"UC^R_H/[8OP3NO ?B6]UC3])O-2TS5'GTN6*.Z66P
MU"WOX0&DCD7:9;:,,"I)0L 5)##QF[_X)0Z:?VZ->_:!L?C1\;M)\8>))+".
M^L+:]TAM+:PLV#1:6B2:<\T5DQ!,D4<RF1F9V8R8<?5U% 'Q3XW_ ."'W@OQ
M+=?!*;1_BQ\:_!,G[/\ X33PGX2_L*^TA5MQY7DSZ@XN-.F'V^XC"K+-&$!"
M#:J9;=T7PW_X)*Z;\+_VQ_$'QNL?C=\=+CQ1XLO;2YUNSNKW1GT_5+>U4K!8
M.%TT3+:(A*^7'*I/WBQ?YZ^M** "BBB@ HHHH **** "BBB@ HHHH ^6_P!H
MK_@D[X,_:.\'?';0[SQQ\3O#-K^T1J.FZAXLDT#4+.VFV65E;V:VMN\EK(8[
M>6*UB\U6WL^77<(W9#-\,O\ @E]I?PWM-/,GQ9^+VOZIX?\ #.N^%?#FJZA<
M:1'>>%K758]-1VL?LVGPQ0R6XTN$V^8V6/SIPRNK*J?3U% 'Q?\  ?\ X(J>
M'_V<?@#_ ,*W\,_'+]H:T\/V-W::EHA36]+MY_#]Y!=M=FXA,&GQI,TTCR"9
M+Q;B.97.Y"P5A[]^R%^R/X;_ &,/A9=^%_#EYKFL2:QK5_XDUK6=:GCGU+7=
M3O9VGN;RX:.../S'9L8CC10%4!1BO4J* "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBL'XG
M?$[P_P#!CX?:QXK\5:QI_A_PYX?M7O=1U&]E$4%I"@RSLQ_EU)( R2!51BY/
MEBKM@;U%?'(_X+__ +')'_)>?"?_ 'YN_P#XS1_P_P#OV.?^B]>$_P#OS=__
M !FO4_L#-/\ H&J?^ 2_R(]I#NOO/L:BOCG_ (?_ '['/_1>O"?_ 'YN_P#X
MS4/QG_X+$?#7QA^PK\<_B5\ ?'?@[X@>)/A'X8N-::TD2=X8)1$[P^?$3%(T
M;&-AE6'W2,@UC7RC'T(.K6H3C%;MQDE][0U4B]$S[,HK\T?V8O\ @MYXL_:%
M^,?[)GA2\T'PWX7U3XAS^,] ^+^E7MI/'=>%]9T#2H+L):NTVR*&5I5F!D\_
M,$J+O#J[5[+\'O\ @N=\%_C3XRCTRQTWXF:1I^N:5JFM>$-=UKPK/I^D_$"U
MTV%Y[QM)FD(,QCBC9RLJQ,5P0"#7GE'V317YQ:M_P<)Z7XW\6_ A?AY\%_C5
MJOA7XQ^)8])37=4\(S6T-Q;&Q^T.U@OF#[0Z.P5Y,^6J6]RZF54!.S^RI_P7
M#TWQ;\5]4\#_ !,\.^(-/U"^^+_B#X8:!XBTCPW<1^&7NK6ZFCT_3YKR65@U
M_<11%OW8,>3\QBP0 #]!**^+O"G_  7P_9X\4W'@.%M9U[2YOB!X*UKQY:1W
M^GK"^G6&D_:Q?1W0WDQSH;"_&P;@39R_,,+N9>?\%Y?@GIMQH<EUIOQ%M]&O
M-(T'6?$6MG0=^E_#Z+6XHY=+76ITD86LDZ31$!/,""12Y0'- 'VI17S#\.?^
M"KW@'XP?M0>(OACX3\*_%+Q-_P (GXBN/".L>*-+\-/=^']+UBW3=-9W$L;&
M>#:W[OSY84MBX($Q )JK_P $F?\ @HMJ7_!2CX)^*/%VJ> /$GP_DT7Q3J.B
MV]KJE@]NDT$%Q)''M=F/F3($VSX5!','0#Y<D ^J**_&?]D[_@OY\9OBG=?L
M^:EK7B7]F;Q=+\8OB(O@C6?AQX9@OH/&OAFU>]NK7^TY%^W7 2*-8%N6\Z!5
M:*1 &7?YB_4WAG_@MIX;\$7BZ)XLTOQ=XZ\6^)_B!XT\)>%-)\">#+B:ZO/^
M$?F026S1-<R%IO+D4F?,<) =W$"(S  ^\J*^/=5_X+=?")_A/X'\2>&]!^*G
MCS5?'<.IW$'A+PWX4FN_$FD1:7)Y.IO?6C%/LWV68K$P=]TCLHA$V0:]&_:
M_P""AO@GX0?\$Z->_:4T.3_A,O!5EX3'BK2!;L]K_;*2QJUK%ET+P&1Y(T;?
M'NB+'<F5*T >^45\<_LJ?$#]LF+XA> =6^+^F_ _5OAKXST&?4O$4GAM+O2;
M[X?70@2:WC+7-S,M_$_,3E5C*L6?<%C"RQ_"+_@NC\%_C+XOCTVQTSXF:3IN
MM:7JFL^$=>UCPK/8:3X_MM-ADGO6TJ9SF9HXHW?;*L1*@$ YH ^RJ*^!+/\
MX.+?@UJFBK>6/P__ &@+Z2^\)1^.-'MH? <QDU[2 I-W=6Y+A!%:%7$LDS1Q
ML5'D-.)(B_3_ !1_X+Q?!GX;3C[+H/Q8\86B^"M)^(\]YX<\)37UO8^'-0CD
ME74YR64PPPQHKS"0+(HD&U'VR>6 ?:E%?)O[37_!9+X6_LMZ+HWB+5/#_P 4
M?$/P[U/1].\0W7COP_X6FO/#&CZ??R)':7,]V2@<2>8C;+=9I K E!D5G?&K
M_@MU\(O@)\9/&'@_7M#^)S1_#OQ%IOAWQ;X@L_#3W&A>&'U".W>SN;JZ5\+!
M(URL8VAI ZL#&%*,X!]AT5\PC_@K-\,?LLB_V?XU75(OC OP0.E'20+PZ^QW
M!@OF;/L9@S<BXW;?)!;&1MKZ>H **** "BBB@ HHHH **** "BO'?CQ^W]\'
M?V9/&4?A[QU\0-#\.ZW+;K=BRG,DDPB8D*["-6V@E6QNQG%<5_P^(_9I_P"B
MN>'?^_-S_P#&JXZF982$G"=6*:Z.23_,\^IFV!IS=.I6A%K=.237RN?2]%?-
M'_#XC]FG_HKGAW_OS<__ !JEB_X+"?LTS2J@^+OAI2Q"@NEPBC/J3'@#W/ J
M/[5P7_/Z'_@2_P S/^V\N_Z"(?\ @<?\SZ6HK\T?V_\ _@KGXV_9X_X*%7_P
MJTGXI?LY_"SPC:^ +#Q;9ZO\1-+O[PZO<SW5Q"UO%);7L"[=D2N,*QQG&>WL
MG[ 7_!5&[^/OPB_9MM?BIX.U/P7\5OV@M)U[4;+3K33YH=.5-(D DN,7#">&
M&Y@>"X@5@Y*3 ;V&UW[SU#[*HKX@T#_@OI\'?'O@+X=ZQX/\+_%CQUJ'Q+TO
M4M=TSP]H/AZ.YUJ'3K#4)=/N+J2W,Z[Q]HAD"Q0-+,X7(C/..W^)/_!7?X=^
M ?CG;?#^P\)?%_QIKT>DZ=KNLQ>&_!EU>77ABRO_ /CVDO+!@FH!MOS/%#;2
MRQ#_ %B(>* /JBBOE_QM_P %;OA9X$_:<E^&EU8^/+J*P\06/A#5O&-EX>EN
M/">B:[>JC6NE7-\IPMP_G0*Q5&CB:>-99(V; \%^!7_!6GXG?$O]M_X>_#?4
M=+\%QZ#XJ^,OQ.^'MY+!8W"W<>G^&[-I["1'-P5$[N,3,4*L#A4C/) /T:HK
MXO\ ^"L_[7GQX_8X\%>)/'?@6'X-^'_ACX#\%W?B'4]=\;M<7DVNZP)0EKH=
MK;P7-NT+R@?+.QE#R3QQA%*DM\__ +27_!=#XL?"[6OB9XFT_P  ^$?#O@C]
MG?1O &I?$OPYXA@NY_$LL_B8Q/+:64\<L4,+V<4R*QFA?=(C< <  _5"BOS5
MU3_@LI\2K?\ :M\VUT#P+/\  ^']H:#]G*:U-O=CQ1_:DEHI;4_M'G?9A;+=
M.B^5Y!=D!^8'!J?]C/\ X+"?$_X__M+_  3;7O#_ (#3X/\ [2VI^-M+\%+I
ML%U#KVA?\(_)+Y<VH323-#-]ICMKD>7##'L8QG>0"" ?I'1110 4444 %%%%
M !1110 44'I7">+OVEO O@/Q!<:3JWB;3[/4+7'G0'>S1$@, VU2 <$''7D5
MPX_,L'@::JXVK&G%NUYR45?M=M*_D=.%P>(Q,_9X:$IO>T4V[=[*YW=%>8_\
M-B_#7_H;M/\ ^_<O_P 11_PV+\-?^ANT_P#[]R__ !%>3_KED'_0=1_\&P_^
M2.__ %>S7_H&J?\ @$O\CTZBO.=,_:T^'6L:E;V=OXLTUKBZD6*)6#H&9C@#
M+* ,GCDU^;O[?7_!;7XL?LV?M1?M2>&=$\>_LP^$=+^ 5EHU[H'A[QU;7O\
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
M>OOZBNPYSQ+_ ()W_L=#]@G]DKP_\+1XB_X2K^PK[5KW^TS8?83/]NU.ZO\
M;Y7F28V?:?+SO.[R]V%SM'S)^T)_P0^\2>,]7^*>E_#+XY+\._AI\:=;N?$_
MBGPEJ_@&P\5)#J]VOEWU[IUS<R(]F\\><@K+Y;NS1[!M5?T(HH ^3_@9_P $
MH/#/P/\ BW#JD/B"^UKPC;?!72?@HFB7]JOVF:QL9)V^U2W<;J&DECFV,B0H
M 5+ \A5\T^!O_!$75/!OB3X<V?Q ^-^N?$/P#\$] UGPW\/-$3PY;:1>:3:Z
MC:2:>S7UY'(XO98;!_(C988 "H<J3N!^^Z* /RW\8?\ !$KXE?#']FG5/M'Q
M@D^+&I?#GX%>+?A;X+\-VG@VWT;[7!>Z<L5FAE%U(6N0T*Q,['9(ODX6)EE>
M;U'_ ()=?\$S?'GPIB^!_P 1OC!\0+[Q%K?PU^%%EX/\+^$9/#]OIK>"S<06
MK7T=S<0RO]NN$$$5JK[8U$<))621C+7WN1FB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BO#?CS^W9HG[/G[1'ACX?ZMX:\4WW_"2Z+?ZPNK:=;I<6MK]ECD
MF:!U#;Q(T%O=2JI :06[B(3,LBQ\C^Q[_P %&[O]I#X1^(/'?B+X;ZQX/\(V
M-I!JNCZEI>H+XK37+28$I'&EA&TK7R_N]UM DZL9HQ#-.2P4 ^H**^8O#O\
MP4NM/B+\%_ACX@\(_#KQAK7BKXMSZDFA^$;B:TT_4+6'3VF%W/>R2R^3 L?E
M(A4,[>=<PQXP7D3'U+_@KIX5N/!EKXJT'P3XRUSPGI?@JQ^(/C._#6=O-X(T
MBZFNX0;B!YM\UQ"VGZBTT-OYAC2PFP7=H8Y@#ZUHKS7XT?M3^$_V>?&&FVOC
M;7/#7A3P_>:/>ZM<ZYK.O6FGP6/D7NFV:(R3.KLLDNI1+YH'EQMY:.0T\0:Q
M\*_VL?AC\<9-+C\'>/O"/B:36DOGL8]-U2&XDN?L3P1W@558G= ]S;K(N,H9
MDW ;A0!Z%17F'A/]M?X/^._'VB^%=%^*'@+5?$OB*SAU#2]+M=<MI;O4+>:V
M-W#)%&K[G$EL#.F =\*M(N4!8<%XU_X*Q?L_^$_#.F:M9_$[PCXGL]3\3Z1X
M4#:'K%I>?9KG5))$M)92)0%MW6&XE$N2'CMY63?M(H ^C**\QT[]M;X/:OXF
M\6:+;?%+X?3:IX#M;R^\1VP\06OF:';V;^7>37(W_NH[=_DF9L"%B%<J>*R_
MV8_VWO!'[7?CGQ[I?@74M/\ $&E^!)K"WEUG3[^&[L[U[JV^T;$,;$JT8^5E
M?# GI0![%17G,7[7WPIG^*6J>!X_B1X'D\8Z'#-/J&BKK=N;ZS2%%DFWP[]Z
MF*-T=P1E%DC9@ ZDS? S]K#X7_M.OJB_#GXA>"_'9T00F_\ [ UFWU#[(LP<
MQ,_E,V%?RY K?=8Q2 $E&  /0**\,M/V^?"^I_';XD>!++P_XZOKKX7^&?\
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
MGB+0] \>^"]7\.^$_"H\6:QXKM?$5G)H^F0&Y>#;-,)-L?"&02,0C(0P)'-
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
M\*M>?&#P/XU\*Z1,5F_XETNN:_KVJ0M,?+R(UCU2V639N)>!\!@%)U_VG/\
M@DQJW[2/Q8^)#MXTL]$\!?$'P7J4/V 6DEU=6'C*]T3_ (1UM<QO17A310+<
M0;E+-)*VY2V1]NT4 ?G]9_\ !,KXA7/AS6]<OM!\%R>-+R^T@01O\8_'5YJ8
MM[&WU:+SK;Q-/*UYIDA;5[@I#;V<D8A>[AE>X%X)+:[HO_!-#XNMJ?A\^(/&
M'A/Q))_9WP[;6=6FDEM[P7?A?QA=:XT*11VPCN$EL[^6'[0QA=IK2-VA_P!(
M<P_>E% 'PS\5_P#@DKK/Q@^&UQX4NO$VD:/9:U\0_'OBG4KVQB<W*67B+1=>
MTR'RP5 :YA_M:%FW$*1 P#'Y<XOPM_X)4^,XO%WASQ%XDM_"&FZQX?UWPO=3
MRKX\\4^,)-4M='N+NY9EDUB5Q:*TMRK06<<;_9V$I:[F\P!/T HH ^1O@U^P
MAXV^"_[47AGQW:ZCX5U#3;;7_B%+JMHT\]O-'I_B35+'4X)(2(F62XADTZ&-
MXGV(PN'<2YC"R,_;7_8?^)'QK\8_%Q?!.J>#5T']H'X=6GPU\23Z]/=1W7A*
M"!M54ZA8Q0Q.M\S1:Q<?Z+)):JLD"-YS"1U7Z\HH \#\%_L=7UMX3_:*T'6M
M<9;'XVZ]=WMK=:?(WVS3+2XT'3M*.YF 'GJUG)(",KADYSD#P*W_ .";OQ=\
M;:EX?NO$EQ\*=!F\(Z-X&\.61T">\E&HP^'?%-CK,EVX>WC^S">&V=(K-?.6
MW=L&XE5RZ??-% 'Y]ZQ_P1BUK64\4:;)XRL8]#N/%%K#X96!9(KCPWX42?4[
MYK*$[2$NDNM9N8H]F(_LVG::&^:,XA\5_P#!+OXM?&3PC/:^)+[X8^&;_0?!
M/A?PKH;^&K_4XO[3G\/Z[;ZQ!/+-%';7&G0W)MEB$5M)++8^8[QSW#8Q^A5%
M 'QE^RQ_P3F\1?"C]H?PK\1M:M_#>EW5E<^(K[4]/B\6:[XNO#/?V6AV-M(=
M5U=C/=2K!I#*TGEVR+')#$L3>6\TOF=A_P $F_BMX%_9KB^&^AZA\,]4A\6?
M#[P1X4\3:IJ]U>"31+SPY#'$SV,2VS?:H+A4S&)7MVM92\V)_,,*_HS10!\:
M^%_V,?C%\-/VI_$WC;PE?>"=#T/_ (J+4K/2O^$DU>[TGQ/?7[2S6@GTJXCE
MAT61+B4R75YIL[->/YSM;H9RD?V/;>9]GC\W:)=HWA3E<]\>U/HH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH YD_!SPV?C(OQ _L
MT?\ "7+HQ\/#4//E_P"/$SBX,/E[O+_UH#;MN[MG'%<#\3/V!?A?\6/'-]XH
MU+2=?T_Q1J5XM[/K6@^*M6T'4BXM(K,JMS8W,,J1-!# KQ(PC<P1.RLZ*P]D
MHH \*M_^":?P3L_$VCZE#X)6"#0UT\6VC1:K?)X?D?3[9+6QGGTH3"QN+BW@
MB@CBGF@>5!;6VUP8(BF5X'_X)1_ OX?7NBW%CX7UZYN/#=GI^G:4^I^,=;U1
MM.M+#4K'4[*VB^TW<FR""\TVSE2(81?+9<;)95?Z*HH \2_:Q_9&?]K#XC?"
M&35[W0U\&_#/Q9%XXN;&;39)M2O=4LXW&G?9[@3*EO&DDKO*3%(TBH(QL5W:
MH-?_ .";/P9\5>*==U34O"MY?)XD?4IK[29_$&I/H1GU*VGM=0N8M+-Q]A@N
M;F&ZNEEGB@25_M=R2Y:>4O[I10!XCX2_X)V?"?P?XOA\01Z3XFU;7H;G3+M=
M2UWQCK6MW9DTXW;61:6\NY780F^NR%8E3Y[Y!XQV_P <_P!G;PI^T;H>EV/B
MFUU1CH=^-3TR]TK6;W1=2TRY\J6 RV]Y92PW$+-#--$VR10\<TB-N5V4]O10
M!XOI_P#P3V^#^E_#;Q1X1A\'JN@>-/"L/@O78#JEZTFJ:7%+J$PCEE,QE:9I
MM5U"62YW>?+)=.\DCL%(DB_8#^%=M\=H_B/#H.J0>)8=;?Q-''%XBU./28]5
M>TDLY-073%N!8BZDMY94>80;W\QRS%F)/LE% 'CO@']@3X2_##X8)X,T+PG]
MA\-QZKX?UQ;/^U+V3%YH4.EP:5+O>8O^XCT;35V[MLGV;,@<R2%_'_V9/^"7
MU_\  _\ :[LOB1J7B30[C2_#=EKMKHFD:3:ZG;PB35KNWGFG\BXO[BTLL+;X
M>&P@MXIY96F94VI$GV%10!X1\4/^":WPA^,?Q%\3^)_$&C^*KB\\;O;R>(["
MV\;:Y9:+XA\FWBMD6]TR"\2RN4,$,<3)+ RR(NUPP)!U?'G[ _PI^)/Q3@\9
M:IX=OAK$<FG33PV.NZAI^EZI)I\@EL9+W3[>=+.]>W=4,;7,,A411@'$:!?8
MJ* / D_X)@? \7'B%I?!MQ>0>)+34+&6RN]>U*ZL=,AO[I+N[&G6TEPT.F&6
MYBAF+6*0,)(8G!#1H1O_  N_81^&/P?\4Z?KVCZ+K%QX@TW4KG5X]7UCQ)J>
MM:E+=7%G'8R237-Y<2RS_P"BQ1PJLK.L:( @7%>O44 >%^(_^";'P5\5_#G0
M_"=]X->30?#7AK3/".F01ZSJ$,EGIFFW=K>64"RI.)-T5Q9VT@E+&0F(!G8%
M@2Y_X)O_  CN?!UEH_\ 8_B:&;3]:F\11:Y!XRUJ#Q(=0FM_LLMP^LI=C49&
M>V"0$/<,##%%%CRXHU7W2B@#SSX'_LI_#_\ 9OFFD\$^'8M":XT?3M!D,=U/
M-YEG8?:/LJ'S';+*;JX9I/\ 62-*S2,[8-9'A3]ASX9^"?C5)X_TW0]1AU\Z
MC=ZS# ^O:A+I%CJ%VCI=7UMICSFQM[N99IQ)<0P)*_VJY+,3/*7]:HH X6\_
M9L\'W4?C@)8ZE8R?$;5;?6_$$]AK%[97%[>6]K9VD4BRPRJ\.+>PM8RL+(K"
M,[@Q=RW=444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 >!_'+]I7QRW[2%K\(OA3X=\+ZIXIM_#@\6:]
MJWB74)[73=#LI;E[:SC6.")Y+BXN9;>["J#&D:6DCLY)CCDJ^*/^"AF@_ /P
MEHL?Q@T;6?!_CB[TV_U;4_#_ (=TZ^\8#2K"RN/(FU)Y=/MG9+!\QR1S3QPN
MR2@-&DB2QQ['QU_9:\2>(_CEIGQ1^&7C+2/ OCZ#1F\-:I)K7A^37M(U[3!,
MUQ#%/:QW=I*)K>=Y7AECN$VBZN%=) Z[/-=3_P""<7C[1HX-4\+_ !VU:/QQ
MK/AB]\*^+O$?B?P]'KDFLP75]<7ZSVD*SVZ6,UI->7:6J?OK:*"5(GMYA%&5
M /14_P""CGPEN/BU<>#;?7-6O+ZRU33-$N=3M?#VHW&@V][J=O:W&G0OJB0&
MR5KJ.\M1$3-AGGBCR'DC5L[Q5_P5*^"O@[P%X.\17GB36)K'QY927VC06'AG
M4]0O[A8]0LM,>)K2"W>>.X%_J%I:^0Z"4S2E A*.%\5^$'_!+SQ7H/COQQX1
M;Q/'X=^ MKX\\(ZYI&@OI<5[JVNV_AW0?#*64J:B+C_1HVO]'6*>.:U>21+,
M^6T(E\QG?!S_ ()KZAX^^(7Q/\8:[%K_ (!M_$'Q.T'Q/X8T35#97]QI>FZ5
MJ\>O74?^C3R1Q?VCK<^JW!(F=A%-:EE#1B&, ]"A_P""N'PL\*^'M4U#Q5JN
MK0K8RZK>R0:1X.\07UWHFE6'E>==:K;BQ$UB8C,J2>:@17$BJS>5+LL_#K_@
MJ?X%\3?'#Q?X/U:/6]-M]-\5Z-X=T/5XO#VISZ7?+JNC:3?V)NKQ;?[-:33W
M&I-;I%+(K%EB! :5 WS_ /MA_L+_ !9^$6O?$K4_@SIOB+Q5K7QHT;Q'INJW
M5G;:2;>W2^N'GM;65;V_MFMI()+FX:.^C%TFR:Y$MF[BW->_^%/^";_]B_"G
M6/#\_BS][KOCWP7X\EDBT_<EM)X>@\-Q?9%S("ZSGP\#YAVE/M1^1O+^< \Y
M\+_\%?\ 5_C[HF@6OP[^&^KV_B37M6OM*%GKUI=6\ZR17NL0VL<,$Z6JS336
M^A:C<2B:>VBM1 T;2RS[(9/>OA!^U-XD^*'P0\::G'\/[M_B)X*A<'PK'>FT
M_MF=["*^LD@FO8[=X5N([B%#]JBB:"83QN#Y)=O%XO\ @D?J&AZ)-_9'Q$L;
M?7+;Q)J>J:9?2Z+?PBWL;G4=2O[:*1[+5+6[%[:-K.K0)=6MU:QS6^H31SVT
MV(V3V/X<?L@:K\%OV:?%OA3P?XXN-'\>>*[1POBZ;3!>+I%V+&*QM)+>REE(
M\BT@M[=(8999&80AIY;B62::4 \JU#_@HS\0?"7CG6OAIJW@?P+??%>/7/#_
M (>TH:+XEN;GP\+O5K:^O7@N[F2SCFAGLK+3Y[J2)8F:6&:Q8>5]JQ%H0?MW
M_%+Q/\';_7M)^'_P\TJX\ W/B6S^(>I^(O&DECH'AV?19E0)%.MH\\D=Y"3<
MK,T"I;PHYES(%B>GX"_X)I>-/"/P6TOPU)\1? MOK7@OQ+9^,O".M:3X%NX)
M(M83[2M]=ZN+K5[J;57OHKF5)Y#/!,?.F<2[V1HZOC3_ ()A>.-9T+PK::;\
M4O"$B6?B'5?&OBG3]?\  MQJFB^*_$%[=K=17CVD6JV[+!8L-MK;2RSHFV&2
M0S3P13* =)JO_!3NVD\<_L]^&]-\%ZW'KGQF33+_ %VRU)EM9O 5IJ&G7EW;
M1WB_>-Y++97$20JN,6MTS,GEH),W]M3_ (**:I^S;^U9HOPYM=:^!_A&SU'P
MH_B5M7^(_BM]#ANI!>?9OLMOA"';'SDY) Q\IK0^(?\ P2B\)_%7XH>#_B!J
MVO\ B>Q\>:=XIT[QCXJNM#\1:YINE>*-1M-).F^9'IRZB8+,LBP ,OF2"*#R
M6>17D+>D^/\ ]C3P_P#%3]I+4O'7B5=/\0:/K'@23P)?>&]1TV.YL[RWDO/M
M,CR%R0RL,QF,I@CG/:@#COV=?^"EOA'XK_ S3_%'BB,>%=4D\+:QXSNK.U6Z
MU&SDT;3+Z2TEU.TN?L\9N+2<)'<6[>6DDT%Q$XCP:Z:T_P""A_PKO/'UQX?7
M5M<5K)%-YJC^&M271=/=M*75Q#<:B8/LL$O]GO'<;))5(61%^^ZH?&O%?_!+
M'QSJ_A"RTJS^.4UQ<1^#?$'PUO-4\0>%_P"UM0NO#>HW,<MLGFB\BSJ5G#$L
M(O91*D_+S6[N2QOZG_P2JO[_ /:-\.^.+7X@Z7X?7P_;VL*:CHG@^"Q\6RQP
M:6M@ME)JJS&&ZTTNHN?LM]971$C,HE""-(P#TG0_^"E'PM\0^#EUJWF\<(MS
M/9V^G:=<^!=;MM5UQKR&:>V-C926BW%VCP6US*7A1UCCMIVE,8AE*>>:]_P5
M4LM4_:#\'^&?!^CV^N>&O%4VB6YU*\^TZ=>V<UYJ>L:?=P2VDT2RPSVLVDLC
MQ2JCK(9$=5*8KSO1O^"&4-O\-Y-+O_%'PWGN-/UW3?$&CZ%:_#18/ ,=W:V>
MI64UQ=>'7OY(9)[N#5)Q.]I-9J7M;%T1&@/F=QX _P""1-CX(\:^"==B\5:+
M82>$YM+NY=.T#P?:Z)I<TUIJFKZBZV]M!(%MX6?5FB56,LJI;HTLUQ*\DK '
MH/[27_!0G0/V4?VC++PSXRA:Q\(S>$&\0SZO;6MUJ%XET^MZ9I%K:QVEO%))
M+YLVI1C* L#CY<9(Z3X7_M\?#/XM>)[#0]/U36--UJ_N=1L?[/US0;_1KJTN
MK""UNKBVGCNH8S#-]FO;>X1'P98&:6/?&C,.9_:F_P""?T/[37QZ\-^.9/%4
MVC2>';72[5;-=/%PL_V'Q1HWB ,7\Q2N\Z0(,8.T3E^=FQN>_:2_X)<V'[1_
MA'XH:=<>-=5T&\^(WCNV\90ZCI]H%N=#C/AZQ\.7]G&2^&-UID%]#YWRF+^T
M2RJ6A4L =9\/?^"GGP;^*.KZ#;Z+X@UBXL_$:Z>+35Y?#6IV^C1S7]E#?65K
M/?R6XM;>YFMKBW=8)I$DS<0(5$DT:/QOB;_@L%\.3\/?"_B3PGHOQ \56'BC
MQ%X9TBV=O!NM:>LECKL[QVNJ0F6S_?VQCAF=3&"&<11DHTT><BY_X(_>&[7]
MJ^?X@:2WPWTW2+[Q1;>,9DG^&^G:CXHL[Z""".."RUBY9UM;,26L$PC%HT\;
MF417$2LBQ<Q\.O\ @C7KGPZ\-:I'8_$OPII>J_VMX9UK2XM"\ #1_#_VW1M1
M%ZU_>Z3!?B"6^O%_=3S69L4("%85V** /3G_ ."Q/P+?SFMM2\?:A#'#?W,,
MUC\._$%U#?PZ?.;?49;9X[(K<1V<NU9WB++&SHI.YU![V?\ ;\^%J>/;'P_#
MKVH7K7]SIUA_:MGH5_=:%:W>HI!)86L^IQPM9P3W"7-J8XI959OM=J, W, D
MX+P1_P $U(/!.@>&M.C\833P^'?!/C3P8&;3 KSCQ%J6GWQN/];A3;_8=FS!
M\SS=VY-N&X3P9_P1DTCP+\<=!\5V^K> =4AL[CP[J6I76M_#>PU3Q)]LT:PL
M+*(:=JDLA%A;3)IEHSQM;SRQN]R\$\#R(\0!O^.?^"TWPGL_V;O&WQ \'VWC
M/Q<WACP+J/CW2K*;PGK&DP^)[*R\J.9K6ZGLPCQQ3W%LD\L8D%NLPD<;!FO8
MOVE/VK8?@/\ LWVOCK3_  _J6OZEX@NM)TGP[H-UNT>YU+4M5N[>SL;:?[0@
M>T!GN8O.:2,O"BRL8V9/+/C.I_\ !)>TU;]FCPM\-9O'%S]E\-_!3Q-\&VOE
MTE1)=)K*Z2IU#;YN$:'^R\^3E@_G_?79\WN7QO\ V<9/VD_V=K?P?XMUTVOB
M"%],U1/$.@62V9L-:L+F"\M]0M+>X:Y6,)>6\<JPS/,NT>6[2J6+ 'FNC_MF
M>+?@;+XRN/CM:_#+2/#G@WP]/XFU/7/!WB";5/[$C@,/FVMW820I>;MDWF1S
MPQNCK'('2!O*6;4A_P""HGP@.O6&G7%_XSTR:ZN+*SNWU+P-K=A#X?N+VX-O
M90:G)-:*NFRW$FPQI=F)F2:WDP([B%I/*_'G_!(_6/CSJ?C_ %[XB>/O!<_C
M+QGX&U+P+'JGA'X>IX?1H+]K,SWE^LE[=37]R!I]JD9,\4<:"0"/Y\KW'QL_
MX)WZM\5?B'X\%C\0(M'^'/Q<U;2M<\;^'9=!^U:A>75A%9V_^@7XN(Q9QW%M
MIUE#,LEO<';&[1-!(Y< '?>)OV^_A9X/\)6^N:AXBF@TVZOO$>G12C2[MR9_
M#YO1JRE5C+#R?[.N\$C$GE#R]^Y<W/V<?VU_A]^U7JFHV/A"^UMK[3=/LM9:
MUU?P_?Z+/<:?>>:+2^A2\AB::VF,$P66,,N8F!((Q7S/^T/_ ,$MO&^M> /&
M2Z3XXL_$6E:9'\0-;\(^$H/#\=E>7FH^)[?5GGM[O49;LQR!+G4G$#)%;*D9
M*R^:VV5/4/V=?V-?B-X'EA\9>*?B-H^I?$G_ (1S0O"=M>1>%1;6^G:/97?V
MJY@F@6\D2>^NA)+%)=1O%"I2!XK9 CK* ;7_  4&_;EN/V+/#/ANXTGPN_C/
M5M4FO-4U'3H9FCGL?#^F6DE[JVHJH5C(T4210QIP'N;VU0L ^:R?B-_P4$G\
M)_MP>#/A7I>CZ5K&B>+O^$=>+6H[XM^ZU2Q\877F1A04=5_X1F$*0V&%XYS\
MB[NF^+/[ ?@_]HC]HZX\=?$:VL_&FEVOAN#P]H/A^^M6^RZ)FYEGO[@'S")7
MN\6*,"@"KI\8^;<U>3_!'_@D.GP9^)/PSUS_ (6-?:O9_"D:18:-9SZ0JR?V
M7I4?BZVT^SDE$QW-%9^*(8#+MRYTL.5!N"L0!Z9^UM_P4.\%_LQZIXD\,37E
MW_PFVA^%&\7.LWAS6;S1M-L2+P17%_>V-I.EM&[V%RBAOWCL@5$8LH/-?&3_
M (*V?#'P)HWBZST*XUO5_%6CV7B0:+%=>&]4L]'\0:AH=I=W%]:P:D]L+63R
M6LYHI&CD8*Z,HW,"*Z7]I3]A"/\ :'NOC5(WBB71_P#A</P]TGP&VS3Q.=)%
MC<ZS.+H9D7S2_P#:Y7RR%V_9\[FWX7Y/F_8'^+WQO^+-O\-[[2_$'@3X,^$K
MOQY+IUWJ$.E742KK=IJ5C"8+B"^DN;S']J2301RVECY%NLD5P]Q,(I2 >[:]
M_P %C/ .G_!.'Q1IFA^.-:U:'4/!]K?Z-_PB.M65PEMXAU&.RM[^W6:R$EU;
MY6[\IHD*SRVH@5E>6//L7P9_;:^'_P ??B9J/A7PO=^(+R^T\ZDJWD_AK4;3
M2[\Z=>BQOOLM]+ MM<>3=,(F$4C$G++N3YJ\V^+/_!.*Z\>7VK:EI/C:'2=9
MGT#P'I>G2W>B&]M;2Z\*:]<ZW;7$T2W$3313S3K')"LD3*D9VRY8%4_9P_X)
MSZC\!_VO_$'Q1E\::'<0:TNJ^?8Z%X1B\/77B![V\2Y2?6Y;><VVHW%JJ-%#
M<)9V\NV20R/*SLQ .L\:?\%)/A3X#^('BKPO?7WBZ;6/!M]!I.HK9>"]9O;>
M349TM)(=.MIX;5H;J]>*]MY?LT#O*(B\K*L<<CK3N?\ @J+\'8-,TVXCU3Q9
M>27T5[<75G9^"]9NK[0H;.Z^R74FHVT=JTU@L5P=C&Y2/@.XS&CNO(_'S_@E
M9H_QUT#Q]%?:UH]Y?^*OB=9_%'38]<\-Q:QI%C>6^C6.D_9+NQDE47UM)!:R
M[AOA<?:<HT;Q))7G?C/_ ((H3>(_AIX:T'3_ !E\.?#EQI4NJW4E[HWPIL=(
ME\.W=]/'(;_PW+8W%O=:1>11Q1Q++-<7PD$$#3I.Z,S@'T)XD_X*-_"7PEXG
MUC3-0US684T5M4AEU/\ X1O4FT>ZN=,MY[G4+.VOQ!]EN;JWBM;HO!#*\@:T
MN4VE[>98Z?@G_@II\(?'_@;Q#XBL=6\2VVG^&[+3-2G34_"6K:;=7EMJ=S-:
MZ;-:6]Q;1RW2W<\$L4!@5_,< +DLN?&=>_X(JZ+J?Q ^(%]:ZI\/;/2_&EQX
MFU.*_?X;6,_C"SO==@OEN%DUMI=TEI%-J-Q+%''!#<!4@A:Z:%9(Y?6/B/\
M\$[])^(_Q=^"OBJX\17MM#\*;2.QU33(K5!;>,H;=K>YT\7/.Y#9ZC:6]Y"0
M6VNLBXQ(QH O6_\ P4\^"\EOK%S+XFU2ST_2M*GURWU"Z\-ZG#9>(+&&XAM7
MN-*F:W":HAGN;6-/L1F,IN[8QAQ<0E]']D']L2/]K/Q;\6+6UT'5M#T_X=^)
MK;0+8:MIEYI>H7(DT?3M0=Y[2ZBBEA99+UT7*E72-)%9E<&OF[X<_P#!"'P_
M\./!D_A[3]=\"Z1:Z#IUO9^#M:T/X::=I_B:QGL]1L=0TZ[U742\C:E+;RZ;
M:@B..TCN%,QG69V1XOH3X!?LN>/OA)XK\5>(]6^(WA_6?$'Q \7VWB7Q*UCX
M2>PLKBV@T:WTQ;*UADO9WM\FTMYO->64Y61=N'!4 ]ZHHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
# /_9

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>15
<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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968214368">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Document And Entity Information - USD ($)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Feb. 23, 2024</div></th>
<th class="th"><div>Jun. 30, 2023</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_DocumentInformationLineItems', window );"><strong>Document Information [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_EntityCentralIndexKey', window );">Entity Central Index Key</a></td>
<td class="text">0001001385<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_EntityRegistrantName', window );">Entity Registrant Name</a></td>
<td class="text">Northwest Pipe Co.<span></span>
</td>
<td class="text">&#160;<span></span>
</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_AmendmentFlag', window );">Amendment Flag</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_CurrentFiscalYearEndDate', window );">Current Fiscal Year End Date</a></td>
<td class="text">--12-31<span></span>
</td>
<td class="text">&#160;<span></span>
</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_DocumentFiscalPeriodFocus', window );">Document Fiscal Period Focus</a></td>
<td class="text">FY<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_DocumentFiscalYearFocus', window );">Document Fiscal Year Focus</a></td>
<td class="text">2023<span></span>
</td>
<td class="text">&#160;<span></span>
</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">10-K<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_DocumentAnnualReport', window );">Document Annual Report</a></td>
<td class="text">true<span></span>
</td>
<td class="text">&#160;<span></span>
</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_DocumentPeriodEndDate', window );">Document Period End Date</a></td>
<td class="text">Dec. 31,  2023<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_DocumentTransitionReport', window );">Document Transition Report</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</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_EntityFileNumber', window );">Entity File Number</a></td>
<td class="text">0-27140<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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">OR<span></span>
</td>
<td class="text">&#160;<span></span>
</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_EntityTaxIdentificationNumber', window );">Entity Tax Identification Number</a></td>
<td class="text">93-0557988<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_EntityAddressAddressLine1', window );">Entity Address, Address Line One</a></td>
<td class="text">201 NE Park Plaza Drive, Suite&#160;100<span></span>
</td>
<td class="text">&#160;<span></span>
</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_EntityAddressCityOrTown', window );">Entity Address, City or Town</a></td>
<td class="text">Vancouver<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_EntityAddressStateOrProvince', window );">Entity Address, State or Province</a></td>
<td class="text">WA<span></span>
</td>
<td class="text">&#160;<span></span>
</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_EntityAddressPostalZipCode', window );">Entity Address, Postal Zip Code</a></td>
<td class="text">98684<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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">360<span></span>
</td>
<td class="text">&#160;<span></span>
</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_LocalPhoneNumber', window );">Local Phone Number</a></td>
<td class="text">397&#8209;6250<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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, par value $0.01 per share<span></span>
</td>
<td class="text">&#160;<span></span>
</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_TradingSymbol', window );">Trading Symbol</a></td>
<td class="text">NWPX<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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>
<td class="text">&#160;<span></span>
</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_EntityWellKnownSeasonedIssuer', window );">Entity Well-known Seasoned Issuer</a></td>
<td class="text">No<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_EntityVoluntaryFilers', window );">Entity Voluntary Filers</a></td>
<td class="text">No<span></span>
</td>
<td class="text">&#160;<span></span>
</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_EntityCurrentReportingStatus', window );">Entity Current Reporting Status</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_EntityInteractiveDataCurrent', window );">Entity Interactive Data Current</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</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_EntityFilerCategory', window );">Entity Filer Category</a></td>
<td class="text">Accelerated Filer<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_EntitySmallBusiness', window );">Entity Small Business</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</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_EntityEmergingGrowthCompany', window );">Entity Emerging Growth Company</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_IcfrAuditorAttestationFlag', window );">ICFR Auditor Attestation Flag</a></td>
<td class="text">true<span></span>
</td>
<td class="text">&#160;<span></span>
</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_DocumentFinStmtErrorCorrectionFlag', window );">Document Financial Statement Error Correction [Flag]</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_EntityShellCompany', window );">Entity Shell Company</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</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_EntityPublicFloat', window );">Entity Public Float</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 262,653,481<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_EntityCommonStockSharesOutstanding', window );">Entity Common Stock, Shares Outstanding</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">9,892,244<span></span>
</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_AuditorFirmId', window );">Auditor Firm ID</a></td>
<td class="text">659<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_AuditorName', window );">Auditor Name</a></td>
<td class="text">Moss Adams&#160;LLP<span></span>
</td>
<td class="text">&#160;<span></span>
</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_AuditorLocation', window );">Auditor Location</a></td>
<td class="text">Portland, Oregon<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_AuditorFirmId">
<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>PCAOB issued Audit Firm Identifier</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 Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<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_AuditorFirmId</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:nonemptySequenceNumberItemType</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_AuditorLocation">
<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 );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<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_AuditorLocation</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:internationalNameItemType</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_AuditorName">
<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 );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<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_AuditorName</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:internationalNameItemType</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_CurrentFiscalYearEndDate">
<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>End date of current fiscal year in the format --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_CurrentFiscalYearEndDate</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:gMonthDayItemType</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_DocumentAnnualReport">
<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 only for a form used as an annual report.</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 Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<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_DocumentAnnualReport</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_DocumentFinStmtErrorCorrectionFlag">
<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>Indicates whether any of the financial statement period in the filing include a restatement due to error correction.</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 Regulation S-K<br> -Number 229<br> -Section 402<br> -Subsection w<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 4: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<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_DocumentFinStmtErrorCorrectionFlag</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_DocumentFiscalPeriodFocus">
<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>Fiscal period values are FY, Q1, Q2, and Q3.  1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY.</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_DocumentFiscalPeriodFocus</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:fiscalPeriodItemType</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_DocumentFiscalYearFocus">
<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>This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006.</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_DocumentFiscalYearFocus</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:gYearItemType</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_DocumentInformationLineItems">
<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>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</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_DocumentInformationLineItems</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_DocumentTransitionReport">
<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 only for a form used as a transition report.</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 Forms 10-K, 10-Q, 20-F<br> -Number 240<br> -Section 13<br> -Subsection a-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_DocumentTransitionReport</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_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_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_EntityCommonStockSharesOutstanding">
<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 number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.</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_EntityCommonStockSharesOutstanding</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:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCurrentReportingStatus">
<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 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure.</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_EntityCurrentReportingStatus</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:yesNoItemType</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_EntityFilerCategory">
<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 whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure.</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_EntityFilerCategory</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:filerCategoryItemType</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_EntityInteractiveDataCurrent">
<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 registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files).</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 Regulation S-T<br> -Number 232<br> -Section 405<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_EntityInteractiveDataCurrent</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:yesNoItemType</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_EntityPublicFloat">
<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 aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter.</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_EntityPublicFloat</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:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</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_EntityShellCompany">
<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 registrant is a shell company as defined in Rule 12b-2 of 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 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_EntityShellCompany</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_EntitySmallBusiness">
<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>Indicates that the company is a Smaller Reporting Company (SRC).</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_EntitySmallBusiness</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_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_EntityVoluntaryFilers">
<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 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act.</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_EntityVoluntaryFilers</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:yesNoItemType</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_EntityWellKnownSeasonedIssuer">
<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 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A.</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 405<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_EntityWellKnownSeasonedIssuer</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:yesNoItemType</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_IcfrAuditorAttestationFlag">
<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 );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<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_IcfrAuditorAttestationFlag</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_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_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_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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>16
<FILENAME>R2.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968256272">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Operations - USD ($)<br> shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">$ 444,355<span></span>
</td>
<td class="nump">$ 457,665<span></span>
</td>
<td class="nump">$ 333,313<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_us-gaap_CostOfGoodsAndServicesSold', window );">Cost of sales</a></td>
<td class="nump">366,713<span></span>
</td>
<td class="nump">371,810<span></span>
</td>
<td class="nump">289,059<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_GrossProfit', window );">Gross profit</a></td>
<td class="nump">77,642<span></span>
</td>
<td class="nump">85,855<span></span>
</td>
<td class="nump">44,254<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_us-gaap_SellingGeneralAndAdministrativeExpense', window );">Selling, general, and administrative expense</a></td>
<td class="nump">43,784<span></span>
</td>
<td class="nump">41,034<span></span>
</td>
<td class="nump">28,222<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Operating income</a></td>
<td class="nump">33,858<span></span>
</td>
<td class="nump">44,821<span></span>
</td>
<td class="nump">16,032<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_us-gaap_OtherNonoperatingIncomeExpense', window );">Other income</a></td>
<td class="nump">276<span></span>
</td>
<td class="nump">97<span></span>
</td>
<td class="nump">328<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_us-gaap_InterestExpense', window );">Interest expense</a></td>
<td class="num">(4,855)<span></span>
</td>
<td class="num">(3,568)<span></span>
</td>
<td class="num">(1,202)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income taxes</a></td>
<td class="nump">29,279<span></span>
</td>
<td class="nump">41,350<span></span>
</td>
<td class="nump">15,158<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_us-gaap_IncomeTaxExpenseBenefit', window );">Income tax expense</a></td>
<td class="nump">8,207<span></span>
</td>
<td class="nump">10,201<span></span>
</td>
<td class="nump">3,635<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 21,072<span></span>
</td>
<td class="nump">$ 31,149<span></span>
</td>
<td class="nump">$ 11,523<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_us-gaap_EarningsPerShareAbstract', window );"><strong>Net income per common share</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_EarningsPerShareBasic', window );">Basic (in dollars per share)</a></td>
<td class="nump">$ 2.11<span></span>
</td>
<td class="nump">$ 3.14<span></span>
</td>
<td class="nump">$ 1.17<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_us-gaap_EarningsPerShareDiluted', window );">Diluted (in dollars per share)</a></td>
<td class="nump">$ 2.09<span></span>
</td>
<td class="nump">$ 3.11<span></span>
</td>
<td class="nump">$ 1.16<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_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract', window );"><strong>Shares used in per share calculations:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic (in shares)</a></td>
<td class="nump">9,991<span></span>
</td>
<td class="nump">9,914<span></span>
</td>
<td class="nump">9,854<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_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Diluted (in shares)</a></td>
<td class="nump">10,081<span></span>
</td>
<td class="nump">10,012<span></span>
</td>
<td class="nump">9,928<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CostOfGoodsAndServicesSold">
<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 aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities.</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/disclosureRef<br> -Topic 924<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479941/924-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.2(a),(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-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;">us-gaap_CostOfGoodsAndServicesSold</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_EarningsPerShareAbstract">
<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 );">- References</a><div><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;">us-gaap_EarningsPerShareAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_EarningsPerShareBasic">
<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 amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</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/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482635/260-10-55-15<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-7<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-2<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-10<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-1<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 52<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482635/260-10-55-52<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-7<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;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_EarningsPerShareDiluted">
<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 amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.</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/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482635/260-10-55-15<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-7<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-2<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-1<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 15: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 52<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482635/260-10-55-52<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-7<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;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_GrossProfit">
<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>Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 6: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 17: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 19: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.1,2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-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;">us-gaap_GrossProfit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest">
<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>Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.</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/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(11))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 5: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 235<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479557/942-235-S99-1<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 25<br> -Paragraph 1<br> -SubTopic 20<br> -Topic 940<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481913/940-20-25-1<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(10))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 10: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(15))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-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;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncomeTaxExpenseBenefit">
<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>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</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/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-10<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -SubTopic 20<br> -Topic 740<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482659/740-20-45-2<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -SubTopic 10<br> -Topic 235<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-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;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_InterestExpense">
<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>Amount of the cost of borrowed funds accounted for as interest expense.</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/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-10<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483581/946-220-45-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 835<br> -SubTopic 30<br> -Section 45<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482925/835-30-45-3<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04.9)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (210.5-03(11))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 835<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483013/835-20-50-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;">us-gaap_InterestExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_NetIncomeLoss">
<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 portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482765/220-10-50-6<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4<br><br>Reference 13: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-10<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483581/946-220-45-7<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B<br><br>Reference 32: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483499/205-20-50-7<br><br>Reference 35: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1A<br><br>Reference 37: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1B<br><br>Reference 38: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 39: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-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;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OperatingIncomeLoss">
<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 net result for the period of deducting operating expenses from operating revenues.</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/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<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;">us-gaap_OperatingIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherNonoperatingIncomeExpense">
<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>Amount of income (expense) related to nonoperating activities, classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.9)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-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;">us-gaap_OtherNonoperatingIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<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>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</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/disclosureRef<br> -Topic 924<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479941/924-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-5<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 42<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-42<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 40<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-40<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-41<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-4<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;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_SellingGeneralAndAdministrativeExpense">
<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 aggregate total costs related to selling a firm's product and services, as well as all other general and administrative expenses. Direct selling expenses (for example, credit, warranty, and advertising) are expenses that can be directly linked to the sale of specific products. Indirect selling expenses are expenses that cannot be directly linked to the sale of specific products, for example telephone expenses, Internet, and postal charges. General and administrative expenses include salaries of non-sales personnel, rent, utilities, communication, etc.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.4)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-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;">us-gaap_SellingGeneralAndAdministrativeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<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 average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.</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/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 16<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-16<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;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract">
<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 );">- References</a><div><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;">us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<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>Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.</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/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-10<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;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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>17
<FILENAME>R3.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968237872">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Comprehensive Income - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 21,072<span></span>
</td>
<td class="nump">$ 31,149<span></span>
</td>
<td class="nump">$ 11,523<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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract', window );"><strong>Other comprehensive income (loss), net of tax:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Other comprehensive income (loss), net of tax</a></td>
<td class="num">(171)<span></span>
</td>
<td class="nump">893<span></span>
</td>
<td class="nump">184<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="nump">20,901<span></span>
</td>
<td class="nump">32,042<span></span>
</td>
<td class="nump">11,707<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember', window );">Foreign Exchange Forward [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract', window );"><strong>Other comprehensive income (loss), net of tax:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent', window );">Unrealized gain (loss) on derivatives designated as cash flow hedges</a></td>
<td class="num">(107)<span></span>
</td>
<td class="nump">289<span></span>
</td>
<td class="num">(124)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember', window );">Interest Rate Swap [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract', window );"><strong>Other comprehensive income (loss), net of tax:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent', window );">Unrealized gain (loss) on derivatives designated as cash flow hedges</a></td>
<td class="num">(403)<span></span>
</td>
<td class="nump">649<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember', window );">Pension Plan [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract', window );"><strong>Other comprehensive income (loss), net of tax:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent', window );">Pension liability adjustment</a></td>
<td class="nump">$ 339<span></span>
</td>
<td class="num">$ (45)<span></span>
</td>
<td class="nump">$ 308<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNetOfTax">
<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>Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.</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/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(24))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(26))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1A<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1B<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-5<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;">us-gaap_ComprehensiveIncomeNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_NetIncomeLoss">
<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 portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482765/220-10-50-6<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4<br><br>Reference 13: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-10<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483581/946-220-45-7<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B<br><br>Reference 32: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483499/205-20-50-7<br><br>Reference 35: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1A<br><br>Reference 37: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1B<br><br>Reference 38: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 39: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-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;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent">
<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>Amount, after tax and reclassification adjustment, of (increase) decrease in accumulated other comprehensive income for defined benefit plan, attributable to parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (i-k)<br> -SubTopic 10<br> -Topic 220<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-10A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 19<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-19<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-11<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -SubTopic 10<br> -Topic 810<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-1A<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;">us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent">
<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>Amount, after tax and reclassification, of gain (loss) from derivative instrument designated and qualifying as cash flow hedge included in assessment of hedge effectiveness, attributable to parent.</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/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-11<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;">us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent">
<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>Amount after tax of other comprehensive income (loss) attributable to parent entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 19<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-19<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 20<br> -SubTopic 10<br> -Topic 810<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-20<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -SubTopic 10<br> -Topic 810<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-1A<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1B<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1A<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;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract">
<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 );">- References</a><div><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;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>18
<FILENAME>R4.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960788704">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_AssetsCurrentAbstract', window );"><strong>Current assets:</strong></a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents</a></td>
<td class="nump">$ 4,068<span></span>
</td>
<td class="nump">$ 3,681<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_us-gaap_ReceivablesNetCurrent', window );">Trade and other receivables, less allowance for doubtful accounts of $121 and $369</a></td>
<td class="nump">47,645<span></span>
</td>
<td class="nump">71,563<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_us-gaap_ContractWithCustomerAssetNetCurrent', window );">Contract assets</a></td>
<td class="nump">120,516<span></span>
</td>
<td class="nump">121,778<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_us-gaap_InventoryNet', window );">Inventories</a></td>
<td class="nump">91,229<span></span>
</td>
<td class="nump">71,029<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_us-gaap_PrepaidExpenseAndOtherAssetsCurrent', window );">Prepaid expenses and other</a></td>
<td class="nump">9,026<span></span>
</td>
<td class="nump">10,689<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsCurrent', window );">Total current assets</a></td>
<td class="nump">272,484<span></span>
</td>
<td class="nump">278,740<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_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">143,955<span></span>
</td>
<td class="nump">133,166<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_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating lease right-of-use assets</a></td>
<td class="nump">88,155<span></span>
</td>
<td class="nump">93,124<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_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">55,504<span></span>
</td>
<td class="nump">55,504<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_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Intangible assets, net</a></td>
<td class="nump">31,074<span></span>
</td>
<td class="nump">35,264<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_us-gaap_OtherAssetsNoncurrent', window );">Other assets</a></td>
<td class="nump">6,709<span></span>
</td>
<td class="nump">5,542<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">597,881<span></span>
</td>
<td class="nump">601,340<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_us-gaap_LiabilitiesCurrentAbstract', window );"><strong>Current liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_LongTermDebtCurrent', window );">Current debt</a></td>
<td class="nump">10,756<span></span>
</td>
<td class="nump">10,756<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_us-gaap_AccountsPayableCurrent', window );">Accounts payable</a></td>
<td class="nump">31,142<span></span>
</td>
<td class="nump">26,968<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_us-gaap_AccruedLiabilitiesCurrent', window );">Accrued liabilities</a></td>
<td class="nump">27,913<span></span>
</td>
<td class="nump">30,957<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_us-gaap_ContractWithCustomerLiabilityCurrent', window );">Contract liabilities</a></td>
<td class="nump">21,450<span></span>
</td>
<td class="nump">17,456<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_us-gaap_OperatingLeaseLiabilityCurrent', window );">Current portion of operating lease liabilities</a></td>
<td class="nump">4,933<span></span>
</td>
<td class="nump">4,702<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrent', window );">Total current liabilities</a></td>
<td class="nump">96,194<span></span>
</td>
<td class="nump">90,839<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_us-gaap_LongTermLineOfCredit', window );">Borrowings on line of credit</a></td>
<td class="nump">54,485<span></span>
</td>
<td class="nump">83,696<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_us-gaap_OperatingLeaseLiabilityNoncurrent', window );">Long-term lease liabilities, operating leases</a></td>
<td class="nump">85,283<span></span>
</td>
<td class="nump">89,472<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_us-gaap_DeferredIncomeTaxLiabilitiesNet', window );">Deferred income taxes</a></td>
<td class="nump">10,942<span></span>
</td>
<td class="nump">11,402<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_us-gaap_OtherLiabilitiesNoncurrent', window );">Other long-term liabilities</a></td>
<td class="nump">10,617<span></span>
</td>
<td class="nump">7,657<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Liabilities', window );">Total liabilities</a></td>
<td class="nump">257,521<span></span>
</td>
<td class="nump">283,066<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_us-gaap_CommitmentsAndContingencies', window );">Commitments and contingencies (Note 15)</a></td>
<td class="text"> <span></span>
</td>
<td class="text"> <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_us-gaap_StockholdersEquityAbstract', window );"><strong>Stockholders&#8217; equity:</strong></a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_PreferredStockValue', window );">Preferred stock, $.01 par value, 10,000,000 shares authorized, none issued or outstanding</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<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_us-gaap_CommonStockValue', window );">Common stock, $.01 par value, 15,000,000 shares authorized, 9,985,580 and 9,927,360 shares issued and outstanding as of December 31, 2023 and 2022, respectively</a></td>
<td class="nump">100<span></span>
</td>
<td class="nump">99<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_us-gaap_AdditionalPaidInCapitalCommonStock', window );">Additional paid-in-capital</a></td>
<td class="nump">129,095<span></span>
</td>
<td class="nump">127,911<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_us-gaap_RetainedEarningsAccumulatedDeficit', window );">Retained earnings</a></td>
<td class="nump">212,125<span></span>
</td>
<td class="nump">191,053<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_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax', window );">Accumulated other comprehensive loss</a></td>
<td class="num">(960)<span></span>
</td>
<td class="num">(789)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Total stockholders&#8217; equity</a></td>
<td class="nump">340,360<span></span>
</td>
<td class="nump">318,274<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesAndStockholdersEquity', window );">Total liabilities and stockholders&#8217; equity</a></td>
<td class="nump">$ 597,881<span></span>
</td>
<td class="nump">$ 601,340<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsPayableCurrent">
<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>Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_AccountsPayableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesCurrent">
<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>Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_AccruedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax">
<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>Amount, after tax, of accumulated increase (decrease) in equity from transaction and other event and circumstance from nonowner source.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-14A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-11<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480016/944-40-65-2<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480016/944-40-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-14<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;">us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdditionalPaidInCapitalCommonStock">
<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>Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_AdditionalPaidInCapitalCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Assets">
<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>Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</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/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-25<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 6: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 7: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-12<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(12))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 13: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 14: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 23: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481404/852-10-50-7<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 26: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(11))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-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;">us-gaap_Assets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrent">
<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>Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</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/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-25<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 6: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483467/210-10-45-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 10: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 11: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481404/852-10-50-7<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;">us-gaap_AssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrentAbstract">
<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 );">- References</a><div><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;">us-gaap_AssetsCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_CashAndCashEquivalentsAtCarryingValue">
<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>Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.</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/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483467/210-10-45-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-4<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;">us-gaap_CashAndCashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingencies">
<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>Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur.</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/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(15))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03.17)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.25)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_CommitmentsAndContingencies</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockValue">
<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>Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_CommonStockValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerAssetNetCurrent">
<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>Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time, classified as current.</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/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479837/606-10-45-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479837/606-10-45-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-8<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;">us-gaap_ContractWithCustomerAssetNetCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiabilityCurrent">
<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>Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current.</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/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479837/606-10-45-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-8<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479837/606-10-45-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;">us-gaap_ContractWithCustomerLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilitiesNet">
<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>Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting.</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/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(15)(b)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482525/740-10-45-4<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482525/740-10-45-6<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;">us-gaap_DeferredIncomeTaxLiabilitiesNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsNet">
<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>Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</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/disclosureRef<br> -Topic 926<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483154/926-20-50-5<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FiniteLivedIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<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>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482548/350-20-55-24<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(15))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482598/350-20-45-1<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482573/350-20-50-1<br><br>Reference 6: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482573/350-20-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-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;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<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>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483467/210-10-45-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Liabilities">
<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>Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future.</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/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-25<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-3<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 7: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-12<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(14))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 10: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 19: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481404/852-10-50-7<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481404/852-10-50-7<br><br>Reference 21: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 22: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19-26)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_Liabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesAndStockholdersEquity">
<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>Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-1<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(32))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_LiabilitiesAndStockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrent">
<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>Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer.</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/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-25<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-3<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 7: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483467/210-10-45-5<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 10: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 19: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481404/852-10-50-7<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481404/852-10-50-7<br><br>Reference 21: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.21)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_LiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrentAbstract">
<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 );">- References</a><div><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;">us-gaap_LiabilitiesCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_LongTermDebtCurrent">
<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>Amount, after deduction of unamortized premium (discount) and debt issuance cost, of long-term debt classified as current. Excludes lease obligation.</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/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_LongTermDebtCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LongTermLineOfCredit">
<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 carrying value as of the balance sheet date of the noncurrent portion of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.22)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481573/470-10-45-13<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481573/470-10-45-14<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;">us-gaap_LongTermLineOfCredit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrent">
<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>Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_OperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityNoncurrent">
<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>Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_OperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<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>Amount of lessee's right to use underlying asset under operating lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherAssetsNoncurrent">
<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>Amount of noncurrent assets classified as other.</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/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(17))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_OtherAssetsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherLiabilitiesNoncurrent">
<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>Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.24)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_OtherLiabilitiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockValue">
<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>Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(21))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_PreferredStockValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent">
<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>Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_PrepaidExpenseAndOtherAssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<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>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 10<br> -Topic 360<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482099/360-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 360<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480842/942-360-50-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;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ReceivablesNetCurrent">
<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 total amount due to the entity within one year of the balance sheet date (or one operating cycle, if longer) from outside sources, including trade accounts receivable, notes and loans receivable, as well as any other types of receivables, net of allowances established for the purpose of reducing such receivables to an amount that approximates their net realizable value.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<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;">us-gaap_ReceivablesNetCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetainedEarningsAccumulatedDeficit">
<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>Amount of accumulated undistributed earnings (deficit).</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480016/944-40-65-2<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480016/944-40-65-2<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480990/946-20-50-11<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(17))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480008/505-10-S99-1<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_RetainedEarningsAccumulatedDeficit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<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>Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-12<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.6-05(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-2<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(4)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(7))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 9: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 10: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 11: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 12: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 13: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 14: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480418/310-10-S99-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;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquityAbstract">
<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 );">- References</a><div><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;">us-gaap_StockholdersEquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>19
<FILENAME>R5.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968641840">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets (Parentheticals) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_AllowanceForDoubtfulAccountsReceivable', window );">Allowance for doubtful accounts</a></td>
<td class="nump">$ 121<span></span>
</td>
<td class="nump">$ 369<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_us-gaap_PreferredStockParOrStatedValuePerShare', window );">Preferred stock, par value (in dollars per share)</a></td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="nump">$ 0.01<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_us-gaap_PreferredStockSharesAuthorized', window );">Preferred stock, shares authorized (in shares)</a></td>
<td class="nump">10,000,000<span></span>
</td>
<td class="nump">10,000,000<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_us-gaap_PreferredStockSharesIssued', window );">Preferred stock, shares issued (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<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_us-gaap_PreferredStockSharesOutstanding', window );">Preferred stock, shares outstanding (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<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_us-gaap_CommonStockParOrStatedValuePerShare', window );">Common stock, par value (in dollars per share)</a></td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="nump">$ 0.01<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_us-gaap_CommonStockSharesAuthorized', window );">Common stock, shares authorized (in shares)</a></td>
<td class="nump">15,000,000<span></span>
</td>
<td class="nump">15,000,000<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_us-gaap_CommonStockSharesIssued', window );">Common stock, shares issued (in shares)</a></td>
<td class="nump">9,985,580<span></span>
</td>
<td class="nump">9,927,360<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_us-gaap_CommonStockSharesOutstanding', window );">Common stock, shares outstanding (in shares)</a></td>
<td class="nump">9,985,580<span></span>
</td>
<td class="nump">9,927,360<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllowanceForDoubtfulAccountsReceivable">
<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>Amount of allowance for credit loss on accounts receivable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479344/326-20-45-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481962/310-10-50-4<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479319/326-20-50-13<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479319/326-20-50-13<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;">us-gaap_AllowanceForDoubtfulAccountsReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockParOrStatedValuePerShare">
<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>Face amount or stated value per share of common stock.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_CommonStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesAuthorized">
<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 maximum number of common shares permitted to be issued by an entity's charter and bylaws.</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/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(16)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_CommonStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesIssued">
<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>Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_CommonStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesOutstanding">
<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>Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.6-05(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-2<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(4)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(16)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(7))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_CommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockParOrStatedValuePerShare">
<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>Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.</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/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-13<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_PreferredStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesAuthorized">
<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 maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws.</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/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(16)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_PreferredStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesIssued">
<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>Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt.</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/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-13<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_PreferredStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesOutstanding">
<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>Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased.</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/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.6-05(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-2<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(4)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(16)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(7))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_PreferredStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>20
<FILENAME>R6.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960483904">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Statements of Stockholders' Equity - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Pension Plan [Member] </div>
<div>Common Stock [Member]</div>
</th>
<th class="th">
<div>Pension Plan [Member] </div>
<div>Additional Paid-in Capital [Member]</div>
</th>
<th class="th">
<div>Pension Plan [Member] </div>
<div>Retained Earnings [Member]</div>
</th>
<th class="th">
<div>Pension Plan [Member] </div>
<div>AOCI Attributable to Parent [Member]</div>
</th>
<th class="th"><div>Pension Plan [Member]</div></th>
<th class="th">
<div>Foreign Exchange Forward [Member] </div>
<div>Common Stock [Member]</div>
</th>
<th class="th">
<div>Foreign Exchange Forward [Member] </div>
<div>Additional Paid-in Capital [Member]</div>
</th>
<th class="th">
<div>Foreign Exchange Forward [Member] </div>
<div>Retained Earnings [Member]</div>
</th>
<th class="th">
<div>Foreign Exchange Forward [Member] </div>
<div>AOCI Attributable to Parent [Member]</div>
</th>
<th class="th"><div>Foreign Exchange Forward [Member]</div></th>
<th class="th">
<div>Interest Rate Swap [Member] </div>
<div>Common Stock [Member]</div>
</th>
<th class="th">
<div>Interest Rate Swap [Member] </div>
<div>Additional Paid-in Capital [Member]</div>
</th>
<th class="th">
<div>Interest Rate Swap [Member] </div>
<div>Retained Earnings [Member]</div>
</th>
<th class="th">
<div>Interest Rate Swap [Member] </div>
<div>AOCI Attributable to Parent [Member]</div>
</th>
<th class="th"><div>Interest Rate Swap [Member]</div></th>
<th class="th"><div>Common Stock [Member]</div></th>
<th class="th"><div>Additional Paid-in Capital [Member]</div></th>
<th class="th"><div>Retained Earnings [Member]</div></th>
<th class="th"><div>AOCI Attributable to Parent [Member]</div></th>
<th class="th"><div>Total</div></th>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Dec. 31, 2020</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">9,805,437<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2020</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 98<span></span>
</td>
<td class="nump">$ 123,013<span></span>
</td>
<td class="nump">$ 148,381<span></span>
</td>
<td class="num">$ (1,866)<span></span>
</td>
<td class="nump">$ 269,626<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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">11,523<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">11,523<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_us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent', window );">Pension liability adjustment</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 308<span></span>
</td>
<td class="nump">$ 308<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent', window );">Unrealized gain (loss) on derivatives designated as cash flow hedges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">$ (124)<span></span>
</td>
<td class="num">$ (124)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Issuance of common stock under stock compensation plans, net of tax withholdings (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">65,130<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation', window );">Issuance of common stock under stock compensation plans, net of tax withholdings</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1<span></span>
</td>
<td class="num">(1,167)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(1,166)<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_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Share-based compensation expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">3,216<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,216<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Dec. 31, 2021</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">9,870,567<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balances, December 31, 2022 at Dec. 31, 2021</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 99<span></span>
</td>
<td class="nump">125,062<span></span>
</td>
<td class="nump">159,904<span></span>
</td>
<td class="num">(1,682)<span></span>
</td>
<td class="nump">283,383<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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">31,149<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">31,149<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_us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent', window );">Pension liability adjustment</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(45)<span></span>
</td>
<td class="num">(45)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent', window );">Unrealized gain (loss) on derivatives designated as cash flow hedges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">289<span></span>
</td>
<td class="nump">289<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 649<span></span>
</td>
<td class="nump">649<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Issuance of common stock under stock compensation plans, net of tax withholdings (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">56,793<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation', window );">Issuance of common stock under stock compensation plans, net of tax withholdings</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(853)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(853)<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_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Share-based compensation expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">3,702<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,702<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Dec. 31, 2022</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">9,927,360<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balances, December 31, 2022 at Dec. 31, 2022</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 99<span></span>
</td>
<td class="nump">127,911<span></span>
</td>
<td class="nump">191,053<span></span>
</td>
<td class="num">(789)<span></span>
</td>
<td class="nump">318,274<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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">21,072<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">21,072<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_us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent', window );">Pension liability adjustment</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 339<span></span>
</td>
<td class="nump">$ 339<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent', window );">Unrealized gain (loss) on derivatives designated as cash flow hedges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">$ (107)<span></span>
</td>
<td class="num">$ (107)<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">$ (403)<span></span>
</td>
<td class="num">$ (403)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Issuance of common stock under stock compensation plans, net of tax withholdings (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">86,836<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation', window );">Issuance of common stock under stock compensation plans, net of tax withholdings</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1<span></span>
</td>
<td class="num">(1,653)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(1,652)<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_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Share-based compensation expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">3,672<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,672<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_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchase of common stock (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(28,616)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchase of common stock</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(835)<span></span>
</td>
<td class="text"> <span></span>
</td>
<td class="text"> <span></span>
</td>
<td class="num">(835)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Dec. 31, 2023</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">9,985,580<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balances, December 31, 2022 at Dec. 31, 2023</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 100<span></span>
</td>
<td class="nump">$ 129,095<span></span>
</td>
<td class="nump">$ 212,125<span></span>
</td>
<td class="num">$ (960)<span></span>
</td>
<td class="nump">$ 340,360<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue">
<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>Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 35<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480483/718-10-35-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 13<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481089/718-20-55-13<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481089/718-20-55-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;">us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_NetIncomeLoss">
<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 portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482765/220-10-50-6<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4<br><br>Reference 13: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-10<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483581/946-220-45-7<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B<br><br>Reference 32: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483499/205-20-50-7<br><br>Reference 35: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1A<br><br>Reference 37: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1B<br><br>Reference 38: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 39: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-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;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent">
<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>Amount, after tax and reclassification adjustment, of (increase) decrease in accumulated other comprehensive income for defined benefit plan, attributable to parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (i-k)<br> -SubTopic 10<br> -Topic 220<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-10A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 19<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-19<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-11<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -SubTopic 10<br> -Topic 810<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-1A<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;">us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent">
<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>Amount, after tax and reclassification, of gain (loss) from derivative instrument designated and qualifying as cash flow hedge included in assessment of hedge effectiveness, attributable to parent.</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/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-11<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;">us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_SharesOutstanding">
<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>Number of shares issued which are neither cancelled nor held in the treasury.</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;">us-gaap_SharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation">
<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>Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480008/505-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation">
<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>Value, after forfeiture, of shares issued under share-based payment arrangement. Excludes employee stock ownership plan (ESOP).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480008/505-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares">
<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>Number of shares that have been repurchased and retired during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480008/505-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_StockRepurchasedAndRetiredDuringPeriodShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue">
<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>Equity impact of the value of stock that has been repurchased and retired during the period. The excess of the purchase price over par value can be charged against retained earnings (once the excess is fully allocated to additional paid in capital).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480008/505-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_StockRepurchasedAndRetiredDuringPeriodValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_StockholdersEquity">
<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>Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-12<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.6-05(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-2<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(4)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(7))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 9: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 10: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 11: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 12: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 13: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 14: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480418/310-10-S99-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;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>21
<FILENAME>R7.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960463312">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Stockholders' Equity (Parentheticals) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember', window );">Pension Plan [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax', window );">Pension liability adjustment, tax expense/benefit</a></td>
<td class="nump">$ 110<span></span>
</td>
<td class="num">$ (14)<span></span>
</td>
<td class="nump">$ 102<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember', window );">Foreign Exchange Forward [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent', window );">Unrealized gain (loss) on cash flow hedges, tax expense/benefit</a></td>
<td class="num">(45)<span></span>
</td>
<td class="nump">95<span></span>
</td>
<td class="num">$ (41)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember', window );">Interest Rate Swap [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent', window );">Unrealized gain (loss) on cash flow hedges, tax expense/benefit</a></td>
<td class="num">$ (134)<span></span>
</td>
<td class="nump">$ 213<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent">
<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>Amount, after reclassification, of tax expense (benefit) for gain (loss) from derivative instrument designated and qualifying as cash flow hedge included in assessment of hedge effectiveness, attributable to parent.</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/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-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;">us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax">
<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>Amount, after reclassification adjustment, of tax (expense) benefit for (increase) decrease in accumulated other comprehensive income of defined benefit plan.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (i-k)<br> -SubTopic 10<br> -Topic 220<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-10A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 12<br> -SubTopic 10<br> -Topic 220<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-12<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 19<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-19<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;">us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>22
<FILENAME>R8.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960858432">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Cash Flows - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Cash flows from operating activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 21,072<span></span>
</td>
<td class="nump">$ 31,149<span></span>
</td>
<td class="nump">$ 11,523<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_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Adjustments to reconcile net income to net cash provided by (used in) operating activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization', window );">Depreciation and finance lease amortization</a></td>
<td class="nump">11,616<span></span>
</td>
<td class="nump">12,664<span></span>
</td>
<td class="nump">11,482<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_us-gaap_AmortizationOfIntangibleAssets', window );">Amortization of intangible assets</a></td>
<td class="nump">4,190<span></span>
</td>
<td class="nump">4,439<span></span>
</td>
<td class="nump">2,142<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_us-gaap_DeferredIncomeTaxExpenseBenefit', window );">Deferred income taxes</a></td>
<td class="num">(172)<span></span>
</td>
<td class="nump">514<span></span>
</td>
<td class="nump">180<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_GainOnInsuranceProceeds', window );">Gain on insurance proceeds</a></td>
<td class="num">(466)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<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_us-gaap_ShareBasedCompensation', window );">Share-based compensation expense</a></td>
<td class="nump">3,672<span></span>
</td>
<td class="nump">3,702<span></span>
</td>
<td class="nump">3,216<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_us-gaap_OtherNoncashIncomeExpense', window );">Other, net</a></td>
<td class="nump">1,547<span></span>
</td>
<td class="num">(286)<span></span>
</td>
<td class="nump">193<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_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract', window );"><strong>Changes in operating assets and liabilities, net of acquired assets and assumed liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables', window );">Trade and other receivables</a></td>
<td class="nump">23,775<span></span>
</td>
<td class="num">(19,346)<span></span>
</td>
<td class="nump">392<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_us-gaap_IncreaseDecreaseInContractWithCustomerAsset', window );">Contract assets, net</a></td>
<td class="nump">5,256<span></span>
</td>
<td class="nump">225<span></span>
</td>
<td class="num">(33,752)<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_us-gaap_IncreaseDecreaseInInventories', window );">Inventories</a></td>
<td class="num">(20,200)<span></span>
</td>
<td class="num">(11,378)<span></span>
</td>
<td class="num">(17,650)<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_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets', window );">Prepaid expenses and other assets</a></td>
<td class="nump">5,241<span></span>
</td>
<td class="nump">3,381<span></span>
</td>
<td class="nump">6,727<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_us-gaap_IncreaseDecreaseInAccountsPayable', window );">Accounts payable</a></td>
<td class="nump">4,704<span></span>
</td>
<td class="num">(5,826)<span></span>
</td>
<td class="nump">16,783<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_us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities', window );">Accrued and other liabilities</a></td>
<td class="num">(6,780)<span></span>
</td>
<td class="num">(1,698)<span></span>
</td>
<td class="num">(7,047)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivities', window );">Net cash provided by (used in) operating activities</a></td>
<td class="nump">53,455<span></span>
</td>
<td class="nump">17,540<span></span>
</td>
<td class="num">(5,811)<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_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract', window );"><strong>Cash flows from investing activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Acquisition of business, net of cash acquired</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(87,215)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition', window );">Payment of working capital adjustment in acquisition of business</a></td>
<td class="num">(2,731)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<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_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Purchases of property and equipment</a></td>
<td class="num">(18,291)<span></span>
</td>
<td class="num">(22,829)<span></span>
</td>
<td class="num">(13,262)<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_us-gaap_PaymentsToAcquireIntangibleAssets', window );">Purchases of intangible assets</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(327)<span></span>
</td>
<td class="nump">0<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_us-gaap_ProceedsFromInsuranceSettlementInvestingActivities', window );">Proceeds from insurance</a></td>
<td class="nump">431<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<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_us-gaap_PaymentsForProceedsFromOtherInvestingActivities', window );">Other investing activities</a></td>
<td class="nump">219<span></span>
</td>
<td class="nump">106<span></span>
</td>
<td class="nump">325<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivities', window );">Net cash used in investing activities</a></td>
<td class="num">(20,372)<span></span>
</td>
<td class="num">(23,050)<span></span>
</td>
<td class="num">(100,152)<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_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract', window );"><strong>Cash flows from financing activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ProceedsFromLinesOfCredit', window );">Borrowings on line of credit</a></td>
<td class="nump">155,398<span></span>
</td>
<td class="nump">177,634<span></span>
</td>
<td class="nump">122,272<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_us-gaap_RepaymentsOfLinesOfCredit', window );">Repayments on line of credit</a></td>
<td class="num">(184,609)<span></span>
</td>
<td class="num">(180,699)<span></span>
</td>
<td class="num">(35,511)<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_us-gaap_ProceedsFromIssuanceOfLongTermDebt', window );">Borrowings on other debt</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">10,756<span></span>
</td>
<td class="nump">0<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_us-gaap_RepaymentsOfLongTermDebt', window );">Payments on other debt</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(13,762)<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_us-gaap_FinanceLeasePrincipalPayments', window );">Payments on finance lease liabilities</a></td>
<td class="num">(826)<span></span>
</td>
<td class="num">(597)<span></span>
</td>
<td class="num">(415)<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_us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation', window );">Tax withholdings related to net share settlements of restricted stock and performance share awards</a></td>
<td class="num">(1,652)<span></span>
</td>
<td class="num">(853)<span></span>
</td>
<td class="num">(1,166)<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_us-gaap_PaymentsForRepurchaseOfCommonStock', window );">Repurchase of common stock</a></td>
<td class="num">(707)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<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_us-gaap_ProceedsFromPaymentsForOtherFinancingActivities', window );">Other financing activities</a></td>
<td class="num">(300)<span></span>
</td>
<td class="num">(47)<span></span>
</td>
<td class="num">(385)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivities', window );">Net cash provided by (used in) financing activities</a></td>
<td class="num">(32,696)<span></span>
</td>
<td class="nump">6,194<span></span>
</td>
<td class="nump">71,033<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect', window );">Change in cash and cash equivalents</a></td>
<td class="nump">387<span></span>
</td>
<td class="nump">684<span></span>
</td>
<td class="num">(34,930)<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_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations', window );">Cash and cash equivalents, beginning of period</a></td>
<td class="nump">3,681<span></span>
</td>
<td class="nump">2,997<span></span>
</td>
<td class="nump">37,927<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_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations', window );">Cash and cash equivalents, end of period</a></td>
<td class="nump">4,068<span></span>
</td>
<td class="nump">3,681<span></span>
</td>
<td class="nump">2,997<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_us-gaap_SupplementalCashFlowInformationAbstract', window );"><strong>Supplemental disclosure of cash flow information:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_InterestPaidNet', window );">Cash paid during the period for interest, net of amounts capitalized</a></td>
<td class="nump">4,660<span></span>
</td>
<td class="nump">3,170<span></span>
</td>
<td class="nump">339<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_us-gaap_IncomeTaxesPaidNet', window );">Cash paid during the period for income taxes, net of refunds of $145, $23, and $79</a></td>
<td class="nump">5,911<span></span>
</td>
<td class="nump">13,774<span></span>
</td>
<td class="nump">2,481<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_us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract', window );"><strong>Noncash investing and financing activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_CapitalExpendituresIncurredButNotYetPaid', window );">Accrued property and equipment purchases</a></td>
<td class="nump">656<span></span>
</td>
<td class="nump">1,314<span></span>
</td>
<td class="nump">788<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_AccruedPaymentsForRepurchaseOfCommonStock', window );">Accrued payment for repurchase of common stock</a></td>
<td class="nump">128<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued', window );">Accrued consideration in acquisition of business</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,820<span></span>
</td>
<td class="nump">911<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_us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability', window );">Right-of-use assets obtained in exchange for operating lease liabilities</a></td>
<td class="nump">952<span></span>
</td>
<td class="nump">568<span></span>
</td>
<td class="nump">16,043<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_us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability', window );">Right-of-use assets obtained in exchange for finance lease liabilities</a></td>
<td class="nump">$ 5,270<span></span>
</td>
<td class="nump">$ 1,466<span></span>
</td>
<td class="nump">$ 853<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_AccruedPaymentsForRepurchaseOfCommonStock">
<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>Represents the total amount of payments accrued for the repurchase of common stock.</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;">nwpx_AccruedPaymentsForRepurchaseOfCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization">
<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 amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives and amount of amortization expense attributable to right-of-use asset from finance lease.</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;">nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_nwpx_GainOnInsuranceProceeds">
<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>Represents the amount of gain on insurance proceeds recognized during the period.</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;">nwpx_GainOnInsuranceProceeds</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued">
<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 total amount of consideration accrued in acquiring a business or in consideration for an asset received in a noncash (or part noncash) acquisition.</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;">nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition">
<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>Represents the payment of working capital adjustment in business acquisition.</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;">nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract">
<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 );">- References</a><div><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;">us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_AmortizationOfIntangibleAssets">
<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 aggregate expense charged against earnings to allocate the cost of intangible assets (nonphysical assets not used in production) in a systematic and rational manner to the periods expected to benefit from such assets. As a noncash expense, this element is added back to net income when calculating cash provided by or used in operations using the indirect method.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482686/350-30-45-2<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_AmortizationOfIntangibleAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_CapitalExpendituresIncurredButNotYetPaid">
<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>Future cash outflow to pay for purchases of fixed assets that have occurred.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482913/230-10-50-4<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482913/230-10-50-3<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482913/230-10-50-5<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;">us-gaap_CapitalExpendituresIncurredButNotYetPaid</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations">
<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>Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</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/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482913/230-10-50-8<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-24<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-4<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;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect">
<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>Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-24<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -SubTopic 230<br> -Topic 830<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481877/830-230-45-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;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract">
<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 );">- References</a><div><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;">us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_DeferredIncomeTaxExpenseBenefit">
<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>Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-1<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -SubTopic 10<br> -Topic 740<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-9<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;">us-gaap_DeferredIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_FinanceLeasePrincipalPayments">
<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>Amount of cash outflow for principal payment on finance lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-5<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;">us-gaap_FinanceLeasePrincipalPayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncomeTaxesPaidNet">
<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 amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income, net of any cash received during the current period as refunds for the overpayment of taxes.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482913/230-10-50-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;">us-gaap_IncomeTaxesPaidNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables">
<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 increase (decrease) during the reporting period in the amount due from customers for the credit sale of goods and services; includes accounts receivable and other types of receivables.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<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;">us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncreaseDecreaseInAccountsPayable">
<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 increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<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;">us-gaap_IncreaseDecreaseInAccountsPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities">
<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>Amount of increase (decrease) in accrued expenses, and obligations classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<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;">us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncreaseDecreaseInContractWithCustomerAsset">
<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>Amount of increase (decrease) in right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<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;">us-gaap_IncreaseDecreaseInContractWithCustomerAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncreaseDecreaseInInventories">
<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 increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<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;">us-gaap_IncreaseDecreaseInInventories</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract">
<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 );">- References</a><div><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;">us-gaap_IncreaseDecreaseInOperatingCapitalAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets">
<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>Amount of increase (decrease) in prepaid expenses, and assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<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;">us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_InterestPaidNet">
<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>Amount of cash paid for interest, excluding capitalized interest, classified as operating activity. Includes, but is not limited to, payment to settle zero-coupon bond for accreted interest of debt discount and debt instrument with insignificant coupon interest rate in relation to effective interest rate of borrowing attributable to accreted interest of debt discount.</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/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 17<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-17<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-25<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482913/230-10-50-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;">us-gaap_InterestPaidNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_NetCashProvidedByUsedInFinancingActivities">
<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>Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit.</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/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-24<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;">us-gaap_NetCashProvidedByUsedInFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract">
<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 );">- References</a><div><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;">us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_NetCashProvidedByUsedInInvestingActivities">
<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>Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets.</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/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-24<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;">us-gaap_NetCashProvidedByUsedInInvestingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract">
<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 );">- References</a><div><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;">us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_NetCashProvidedByUsedInOperatingActivities">
<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>Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-24<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-25<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;">us-gaap_NetCashProvidedByUsedInOperatingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</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_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract">
<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 );">- References</a><div><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;">us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_NetIncomeLoss">
<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 portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482765/220-10-50-6<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4<br><br>Reference 13: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-10<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483581/946-220-45-7<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B<br><br>Reference 32: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483499/205-20-50-7<br><br>Reference 35: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1A<br><br>Reference 37: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1B<br><br>Reference 38: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 39: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-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;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherNoncashIncomeExpense">
<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>Amount of income (expense) included in net income that results in no cash inflow (outflow), classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<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;">us-gaap_OtherNoncashIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsForProceedsFromOtherInvestingActivities">
<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>Amount of cash (inflow) outflow from investing activities classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 13<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-13<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 12<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-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;">us-gaap_PaymentsForProceedsFromOtherInvestingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsForRepurchaseOfCommonStock">
<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 cash outflow to reacquire common stock during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-15<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;">us-gaap_PaymentsForRepurchaseOfCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation">
<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>Amount of cash outflow to satisfy grantee's tax withholding obligation for award under share-based payment arrangement.</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/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-15<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;">us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired">
<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 cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-13<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;">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquireIntangibleAssets">
<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 cash outflow to acquire asset without physical form usually arising from contractual or other legal rights, excluding goodwill.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-13<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;">us-gaap_PaymentsToAcquireIntangibleAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment">
<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 cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-13<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;">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_ProceedsFromInsuranceSettlementInvestingActivities">
<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>Amount of cash inflow for proceeds from settlement of insurance claim, classified as investing activities. Excludes insurance settlement classified as operating activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-12<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 21B<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-21B<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;">us-gaap_ProceedsFromInsuranceSettlementInvestingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_ProceedsFromIssuanceOfLongTermDebt">
<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 cash inflow from a debt initially having maturity due after one year or beyond the operating cycle, if longer.</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/disclosureRef<br> -Topic 946<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-03(i)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479886/946-10-S99-3<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-14<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;">us-gaap_ProceedsFromIssuanceOfLongTermDebt</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_ProceedsFromLinesOfCredit">
<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>Amount of cash inflow from contractual arrangement with the lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(f))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-14<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;">us-gaap_ProceedsFromLinesOfCredit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_ProceedsFromPaymentsForOtherFinancingActivities">
<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>Amount of cash inflow (outflow) from financing activities classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 14<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-14<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 15<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-15<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;">us-gaap_ProceedsFromPaymentsForOtherFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_RepaymentsOfLinesOfCredit">
<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>Amount of cash outflow for payment of an obligation from a lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(f))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-15<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;">us-gaap_RepaymentsOfLinesOfCredit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_RepaymentsOfLongTermDebt">
<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 cash outflow for debt initially having maturity due after one year or beyond the normal operating cycle, if longer.</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/disclosureRef<br> -Topic 946<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-03(i)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479886/946-10-S99-3<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-15<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;">us-gaap_RepaymentsOfLongTermDebt</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability">
<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>Amount of increase in right-of-use asset obtained in exchange for finance lease liability.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability">
<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>Amount of increase in right-of-use asset obtained in exchange for operating lease liability.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_ShareBasedCompensation">
<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>Amount of noncash expense for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<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;">us-gaap_ShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_SupplementalCashFlowInformationAbstract">
<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 );">- References</a><div><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;">us-gaap_SupplementalCashFlowInformationAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>23
<FILENAME>R9.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968081536">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Cash Flows (Parentheticals) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_ProceedsFromIncomeTaxRefunds', window );">Proceeds from Income Tax Refunds</a></td>
<td class="nump">$ 145<span></span>
</td>
<td class="nump">$ 23<span></span>
</td>
<td class="nump">$ 79<span></span>
</td>
</tr>
</table>
<div style="display: none;"><table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromIncomeTaxRefunds">
<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 amount of cash received during the period as refunds for the overpayment of taxes.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-25<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482913/230-10-50-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;">us-gaap_ProceedsFromIncomeTaxRefunds</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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>24
<FILENAME>R10.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920967545312">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Insider Trading Arrangements<br></strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2023</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_ecd_InsiderTradingArrLineItems', window );"><strong>Insider Trading Arr Line Items</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_MtrlTermsOfTrdArrTextBlock', window );">Material Terms of Trading Arrangement [Text Block]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 100%;"><tbody><tr><td style="vertical-align: top; width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><a href="#" id="item9b" title="item9b"></a>Item</b>&#160;<b><em style="font: inherit;">9B.</em></b></p> </td><td style="vertical-align: top; width: 90%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Other Information</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><span style="-sec-ix-hidden:c107875783"><span style="-sec-ix-hidden:c107876477"><span style="-sec-ix-hidden:c107876478"><span style="-sec-ix-hidden:c107876479">None</span></span></span></span> of our directors or officers adopted, modified, or terminated a Rule&#160;<em style="font: inherit;">10b5&#8209;1</em> trading arrangement or a non-Rule&#160;<em style="font: inherit;">10b5&#8209;1</em> trading arrangement during the quarter ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, as such terms are defined under Item&#160;<em style="font: inherit;">408</em>(a) of Regulation&#160;S&#8209;K.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_Rule10b51ArrAdoptedFlag', window );">Rule 10b5-1 Arrangement Adopted [Flag]</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_NonRule10b51ArrAdoptedFlag', window );">Non-Rule 10b5-1 Arrangement Adopted [Flag]</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_Rule10b51ArrTrmntdFlag', window );">Rule 10b5-1 Arrangement Terminated [Flag]</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_NonRule10b51ArrTrmntdFlag', window );">Non-Rule 10b5-1 Arrangement Terminated [Flag]</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ecd_InsiderTradingArrLineItems">
<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 );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<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;">ecd_InsiderTradingArrLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</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_ecd_MtrlTermsOfTrdArrTextBlock">
<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 );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br> -Paragraph 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;">ecd_MtrlTermsOfTrdArrTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_ecd_NonRule10b51ArrAdoptedFlag">
<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 );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br> -Paragraph 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;">ecd_NonRule10b51ArrAdoptedFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</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_ecd_NonRule10b51ArrTrmntdFlag">
<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 );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br> -Paragraph 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;">ecd_NonRule10b51ArrTrmntdFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</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_ecd_Rule10b51ArrAdoptedFlag">
<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 );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br> -Paragraph 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;">ecd_Rule10b51ArrAdoptedFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</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_ecd_Rule10b51ArrTrmntdFlag">
<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 );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br> -Paragraph 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;">ecd_Rule10b51ArrTrmntdFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</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>25
<FILENAME>R11.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966723808">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 1 - Organization<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock', window );">Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">1.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>ORGANIZATION:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Northwest Pipe Company (collectively with its subsidiaries, the &#8220;Company&#8221;) is a leading manufacturer of water-related infrastructure products, and operates in two segments, Engineered Steel Pressure Pipe (&#8220;SPP&#8221;) and Precast Infrastructure and Engineered Systems (&#8220;Precast&#8221;). This segment presentation is consistent with how the Company&#8217;s chief operating decision maker, its Chief Executive Officer, evaluates performance of the Company and makes decisions regarding the allocation of resources. See Note&#160;<em style="font: inherit;">19,</em> &#8220;Segment Information&#8221; for detailed descriptions of these segments.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In addition to being the largest manufacturer of engineered steel water pipeline systems in North America, the Company manufactures stormwater and wastewater technology products; high-quality precast and reinforced concrete products; pump lift stations; steel casing pipe, bar-wrapped concrete cylinder pipe, and <em style="font: inherit;">one</em> of the largest offerings of pipeline system joints, fittings, and specialized components. Strategically positioned to meet growing water and wastewater infrastructure needs, the Company provides solution-based products for a wide range of markets under the ParkUSA, Geneva Pipe and Precast, Permalok&#174;, and Northwest Pipe Company lines. The Company is headquartered in Vancouver, Washington, and has 13&#160;manufacturing facilities across North America.</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock">
<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 entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure.</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/disclosureRef<br> -Topic 946<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480424/946-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480424/946-10-50-2<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//810/tableOfContent<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 205<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//205/tableOfContent<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;">us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>26
<FILENAME>R12.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920971374592">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Summary of Significant Accounting Policies<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_SignificantAccountingPoliciesTextBlock', window );">Significant Accounting Policies [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">2.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>SUMMARY OF SIGNIFICANT ACCOUNTING POLICIES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Basis of Consolidation and Presentation</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Consolidated Financial Statements are expressed in United States Dollars and include the accounts of the Company and its subsidiaries over which the Company exercises control as of the financial statement date. Intercompany accounts and transactions have been eliminated.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Use of Estimates</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The preparation of the Consolidated Financial Statements in conformity with accounting principles generally accepted in the United States of America (&#8220;U.S.&#160;GAAP&#8221;) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and disclosure of contingent assets and liabilities as of the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. The Company bases its estimates on historical experience and on various other assumptions that are believed to be reasonable under the circumstances. On an ongoing basis, the Company evaluates all of its estimates, including those related to business combinations, allowance for doubtful accounts, inventories, property and equipment (including depreciation and valuation), goodwill, intangible assets (including amortization), revenue recognition, share-based compensation, income taxes, and litigation and other contingencies. Actual results <em style="font: inherit;"> may </em>differ from these estimates under different assumptions or conditions.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Business Combinations</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Business combinations are accounted for under the acquisition method which requires identifiable assets acquired and liabilities assumed in the acquired business be recognized and measured at fair value on the acquisition date, which is the date that the acquirer obtains control of the acquired business. The amount by which the fair value of consideration transferred as the purchase price exceeds the net fair value of assets acquired and liabilities assumed is recorded as goodwill. The amount by which the net fair value of assets acquired and liabilities assumed exceeds the fair value of consideration transferred as the purchase price is recorded as a bargain purchase gain. Acquisition-related transaction costs are expensed as incurred.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">These estimates are inherently uncertain and unpredictable. In addition, unanticipated events and circumstances <em style="font: inherit;"> may </em>occur which <em style="font: inherit;"> may </em>affect the accuracy or validity of such estimates. As a result, during the measurement period, which <em style="font: inherit;"> may </em>be up to <em style="font: inherit;">one</em> year from the acquisition date, the Company <em style="font: inherit;"> may </em>record adjustments to the assets acquired and liabilities assumed with the corresponding offset to goodwill or bargain purchase gain. Upon the conclusion of the measurement period or final determination of the fair value of assets acquired or liabilities assumed, whichever comes first, any subsequent adjustments are recorded to the Company&#8217;s Consolidated Statements of Operations.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Cash and Cash Equivalents</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Cash and cash equivalents consist of cash and short-term, highly-liquid investments with maturities of <em style="font: inherit;">three</em> months or less when purchased. At times, the Company will have outstanding checks in excess of related bank balances (&#8220;book overdraft&#8221;). If this occurs, the amount of the book overdraft will be reclassified to accounts payable, and changes in the book overdraft will be reflected as a component of operating activities in the Consolidated Statements of Cash Flows. The Company had a book overdraft of $1.8&#160;million and $0.6&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Receivables and Allowance for Doubtful Accounts</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Trade receivables are reported on the Consolidated Balance Sheets net of doubtful accounts. The Company maintains allowances for estimated losses resulting from the inability of its customers to make required payments or from contract disputes. The amounts of such allowances are based on historical experience and management&#8217;s judgment. The Company will write down or write off a receivable account once the account is deemed uncollectible. If the customers&#8217; financial conditions were to deteriorate resulting in their inability to make payments, or if contract disputes were to escalate, additional allowances <em style="font: inherit;"> may </em>need to be recorded which would result in additional expenses being recorded for the period in which such determination was made.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Contract Assets and Contract Liabilities</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Contract assets primarily represent revenue earned over time but <em style="font: inherit;">not</em> yet billable based on the terms of the contracts. These amounts will be billed based on the terms of the contracts, which can include certain milestones, partial shipments, or completion of the contracts. Payment terms of amounts billed vary based on the customer, but are typically due within <em style="font: inherit;">30</em>&#160;days of invoicing. Contract liabilities represent advance billings on contracts, typically for steel.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Inventories</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Inventories are stated at the lower of cost and net realizable value. The cost of raw material inventories of steel is either on a specific identification basis or on an average cost basis. The cost of substantially all other raw material inventories, as well as work-in-process and supplies, is either on an average cost basis or at standard cost. The cost of finished goods uses the <em style="font: inherit;">first</em>-in, <em style="font: inherit;">first</em>-out method of accounting.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Property and Equipment</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Property and equipment are recorded at cost. Maintenance and repairs are expensed as incurred, and costs of new equipment and buildings, as well as costs of expansions or refurbishment of existing equipment and buildings, including interest where applicable, are capitalized. Depreciation and amortization are determined by the units of production method for most equipment and by the straight-line method for the remaining assets based on the estimated useful lives of the related assets. Estimated useful lives by major classes of property and equipment are as follows: Land improvements (15&#160;&#8211; 30&#160;years); Buildings (20&#160;&#8211; 40&#160;years); Leasehold improvements (5&#160;&#8211; 30&#160;years); and Machinery and equipment (3&#160;&#8211; 30&#160;years). Depreciation expense calculated under the units of production method <em style="font: inherit;"> may </em>be less than, equal to, or greater than depreciation expense calculated under the straight-line method due to variances in production levels. Upon disposal, costs and related accumulated depreciation of the assets are removed from the accounts and resulting gains or losses are reflected in operating expenses. The Company leases certain equipment under long-term finance leases, which are being amortized on a straight-line basis over the shorter of its useful life or the lease term.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company assesses impairment of property and equipment whenever changes in circumstances indicate that the carrying values of the asset or asset group(s) <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recoverable. The asset group is the lowest level at which identifiable cash flows are largely independent of the cash flows of other groups of assets or liabilities. The recoverable value of a long-lived asset group is determined by estimating future undiscounted cash flows using assumptions about the expected future operating performance of the Company.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Leases</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has entered into various equipment and property leases. Certain lease agreements include renewals and/or purchase options set to expire at various dates, and certain lease agreements include rental payments adjusted periodically for inflation. The Company&#8217;s lease agreements do <em style="font: inherit;">not</em> contain any material residual value guarantees or material restrictive covenants.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>


   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">The Company determines if an arrangement is a lease at inception. Leases with an initial term of <em style="font: inherit;">twelve</em> months or less are <em style="font: inherit;">not</em> recorded on the balance sheet; costs for these leases are recognized on a straight-line basis over the lease term. Right-of-use assets and lease liabilities are recognized based on the present value of lease payments over the lease term at commencement date. When the Company&#8217;s leases do <em style="font: inherit;">not</em> provide an implicit rate of return, the Company uses its revolving loan borrowing rate in determining the present value of lease payments. Some of the Company&#8217;s lease agreements contain non-lease components, which are accounted for separately.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Goodwill</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Goodwill represents the excess of the purchase price over the fair values of the assets acquired and liabilities assumed in conjunction with an acquisition. Goodwill is reviewed for impairment annually, or whenever events occur or circumstances change that indicate goodwill <em style="font: inherit;"> may </em>be impaired. During the <em style="font: inherit;">fourth</em> quarter of <em style="font: inherit;">2022,</em> the Company changed the date of its annual impairment test of goodwill from <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31</em> to <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">30.</em> The change in the impairment test date lessens resource constraints that exist in connection with the Company&#8217;s year-end close and financial reporting process and provides for additional time to complete the required impairment testing. This change did <em style="font: inherit;">not</em> represent a material change to the Company&#8217;s method of applying an accounting principle, and therefore did <em style="font: inherit;">not</em> delay, accelerate, or avoid an impairment charge.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In testing goodwill for impairment, the Company has the option to perform a qualitative assessment to determine whether the existence of events or circumstances indicate that it is more-likely-than-<em style="font: inherit;">not</em> (more than <em style="font: inherit;">50%</em>) that the fair value of a reporting unit is less than its carrying amount. When performing a qualitative assessment, the Company evaluates factors such as industry and market conditions, cost factors, overall financial performance, and other relevant entity specific events and changes. If the qualitative assessment indicates that it is more-likely-than-<em style="font: inherit;">not</em> that the fair value of the reporting unit is less than its carrying amount, or if the Company chooses <em style="font: inherit;">not</em> to perform the qualitative assessment, then a quantitative assessment is performed to determine the reporting unit&#8217;s fair value. If the reporting unit&#8217;s carrying value exceeds its fair value, then an impairment loss is recognized for the amount of the excess of the carrying amount over the reporting unit&#8217;s fair value, <em style="font: inherit;">not</em> to exceed the total amount of goodwill allocated to the reporting unit.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Intangible Assets</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Intangible assets consist primarily of customer relationships, trade names and trademarks, patents, and backlog recorded as the result of acquisition activity. Intangible assets are amortized using the straight-line method over estimated useful lives ranging from <span style="-sec-ix-hidden:c107875832">ten</span>&#160;to 21&#160;years.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Workers Compensation</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company is self-insured and maintains high deductible policies for losses and liabilities associated with workers compensation claims. Losses are accrued based upon the Company&#8217;s estimates of the aggregate liability for claims incurred using historical experience and certain actuarial assumptions followed in the insurance industry. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, workers compensation reserves recorded were $2.2&#160;million and $1.6&#160;million, respectively, of which $1.3&#160;million and $0.5&#160;million, respectively, were included in Accrued liabilities and $0.9&#160;million and $1.1&#160;million, respectively, were included in Other long-term liabilities.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Accrued Liabilities</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Accrued liabilities as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em> includes accrued bonus of $5.2&#160;million and $8.0&#160;million, respectively, and accrued sales tax of $5.3&#160;million and $4.4&#160;million, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Derivative Instruments</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In the normal course of business, the Company is exposed to interest rate and foreign currency exchange rate fluctuations. Consistent with the Company&#8217;s strategy for financial risk management, the Company has established a program that utilizes foreign currency forward contracts and interest rate swaps to offset the risks associated with the effects of these exposures. The Company utilizes cash flow hedge accounting treatment for qualifying foreign currency forward contracts and interest rate swaps. Instruments that do <em style="font: inherit;">not</em> qualify for cash flow hedge accounting treatment are remeasured at fair value on each balance sheet date and resulting gains and losses are recognized in earnings.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Share Repurchases</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">All shares reacquired in connection with the Company&#8217;s share repurchase program are retired and treated as authorized and unissued shares.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Pension Benefits</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has <em style="font: inherit;">two</em> defined benefit pension plans that have been frozen since <em style="font: inherit;">2001.</em> The Company funds these plans to cover current plan costs plus amortization of the unfunded plan liabilities. To record these obligations, management uses estimates relating to investment returns, mortality, and discount rates.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Foreign Currency Transactions</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The functional currency of the Company, including its Mexican operations, is the United States dollar. Monetary assets and liabilities are remeasured at current exchange rates and non-monetary assets and liabilities are remeasured at historical exchange rates. Revenue and expenses related to monetary assets and liabilities are remeasured at average exchange rates and at historical exchange rates for the revenue and expenses related to non-monetary assets and liabilities.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Transaction gains (losses) from foreign currency forward contracts designated as cash flow hedges are included in Accumulated other comprehensive loss as a separate component of Stockholders&#8217; equity. For the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em> and <em style="font: inherit;">2021</em>, net foreign currency transaction gains (losses) of $0.4&#160;million, $0.5&#160;million, and ($0.5)&#160;million, respectively, were recognized in earnings.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Revenue Recognition</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company manufactures water infrastructure steel pipe products, which are generally made to custom specifications for installation contractors serving projects funded by public water agencies, as well as precast and reinforced concrete products. Generally, each of the Company&#8217;s contracts with its customers contains a single performance obligation, as the promise to transfer products is <em style="font: inherit;">not</em> separately identifiable from other promises in the contract and, therefore, is <em style="font: inherit;">not</em> distinct. The Company generally does <em style="font: inherit;">not</em> recognize revenue on a contract until the contract has approval and commitment from both parties, the contract rights and payment terms can be identified, the contract has commercial substance, and its collectability is probable.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">SPP revenue for water infrastructure steel pipe products is recognized over time as the manufacturing process progresses because of the Company&#8217;s right to payment for work performed to date plus a reasonable profit on cancellations for unique products that have <em style="font: inherit;">no</em> alternative use to the Company. Revenue is measured by the costs incurred to date relative to the estimated total direct costs to fulfill each contract (cost-to-cost method). Contract costs include all material, labor, and other direct costs incurred in satisfying the performance obligations. The cost of steel material is recognized as a contract cost when the steel is introduced into the manufacturing process. Changes in job performance, job conditions, and estimated profitability, including those arising from contract change orders, contract penalty provisions, foreign currency exchange rate movements, changes in raw materials costs, and final contract settlements <em style="font: inherit;"> may </em>result in revisions to estimates of revenue, costs, and income, and are recognized in the period in which the revisions are determined. Provisions for losses on uncompleted contracts, included in Accrued liabilities, are estimated by comparing total estimated contract revenue to the total estimated contract costs and a loss is recognized during the period in which it becomes probable and can be reasonably estimated.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Precast revenue for water infrastructure concrete pipe and precast concrete products is recognized at the time control is transferred to customers, in an amount that reflects the consideration the Company expects to be entitled to in exchange for the products. All variable consideration that <em style="font: inherit;"> may </em>affect the total transaction price, including contractual discounts, returns, and credits, is included in net sales. Estimates for variable consideration are based on historical experience, anticipated performance, and management&#8217;s judgment. The Company&#8217;s contracts do <em style="font: inherit;">not</em> contain significant financing.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Share-based Compensation</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company recognizes the compensation cost of employee and director services received in exchange for awards of equity instruments based on the grant date estimated fair value of the awards. The Company estimates the fair value of restricted stock units (&#8220;RSUs&#8221;) and performance share awards (&#8220;PSAs&#8221;) using the value of the Company&#8217;s stock on the date of grant. Share-based compensation cost is recognized over the period during which the employee or director is required to provide service in exchange for the award and, as forfeitures occur, the associated compensation cost recognized to date is reversed. For awards with performance-based payout conditions, the Company recognizes compensation cost based on the probability of achieving the performance conditions, with changes in expectations recognized as an adjustment to earnings in the period of change. Any recognized compensation cost is reversed if the conditions are ultimately <em style="font: inherit;">not</em> met.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Income Taxes</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Income taxes are recorded using an asset and liability approach that requires the recognition of deferred income tax assets and liabilities for the expected future income tax consequences of events that have been recognized in the Consolidated Financial Statements or income tax returns. Valuation allowances are established when necessary to reduce deferred income tax assets to the amount expected to be realized. The determination of the provision for income taxes requires significant judgment, the use of estimates, and the interpretation and application of complex tax laws. The provision for income taxes primarily reflects a combination of income earned and taxed in the various United States federal, state, local, and to a lesser extent, foreign jurisdictions. Jurisdictional tax law changes, increases or decreases in permanent differences between book and tax items, accruals or adjustments of accruals for unrecognized income tax benefits or valuation allowances, and the change in the mix of earnings from these taxing jurisdictions all affect the overall effective income tax rate.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company records income tax reserves for federal, state, local, and international exposures relating to periods subject to audit. The development of reserves for these exposures requires judgments about tax issues, potential outcomes and timing, and is a subjective estimate. The Company assesses income tax positions and records income tax benefits for all years subject to examination based upon management&#8217;s evaluation of the facts, circumstances, and information available at the reporting dates. For those income tax positions where it is more-likely-than-<em style="font: inherit;">not</em> that an income tax benefit will be sustained, the Company has recorded the largest amount of income tax benefit with a greater than <em style="font: inherit;">50%</em> likelihood of being realized upon settlement with a tax authority that has full knowledge of all relevant information. For those income tax positions where it is <em style="font: inherit;">not</em> more-likely-than-<em style="font: inherit;">not</em> that an income tax benefit will be sustained, <em style="font: inherit;">no</em> income tax benefit has been recognized in the Consolidated Financial Statements.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Accumulated Other Comprehensive Loss</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Accumulated other comprehensive loss includes unrealized gains and losses on derivative instruments related to the effective portion of cash flow hedges and changes in the funded status of the defined benefit pension plans, both net of the related income tax effect.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Net Income per Share</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Basic net income per share is computed by dividing the net income by the weighted-average number of shares of common stock outstanding during the period. Diluted net income per share is computed by giving effect to all dilutive potential shares of common stock, including RSUs and PSAs, assumed to be outstanding during the period using the treasury stock method. Performance-based PSAs are considered dilutive when the related performance conditions have been met assuming the end of the reporting period represents the end of the performance period. In periods with a net loss, all potential shares of common stock are excluded from the computation of diluted net loss per share as the impact would be antidilutive.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Net income per basic and diluted weighted-average common share outstanding was calculated as follows (in thousands, except per share amounts):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">21,072</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,149</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">11,523</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Basic weighted-average common shares outstanding</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,991</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,914</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,854</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Effect of potentially dilutive common shares (1)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">90</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">98</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">74</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Diluted weighted-average common shares outstanding</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,081</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,012</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9,928</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net income per common share</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Basic</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.11</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3.14</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.17</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Diluted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.09</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3.11</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.16</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 27pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">(<em style="font: inherit;">1</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">There were no antidilutive shares for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, or <em style="font: inherit;">2021</em>.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Concentrations of Credit Risk</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Financial instruments, which potentially subject the Company to concentrations of credit risk, consist principally of trade receivables, foreign currency forward contracts, interest rate swaps, and deferred compensation plan assets. Trade receivables generally represent a large number of customers, including municipalities, manufacturers, distributors, and contractors, dispersed across a wide geographic base. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, one customer had a balance in excess of <em style="font: inherit;">10%</em> of total accounts receivable. Foreign currency forward contracts and interest rate swaps are with a high-quality financial institution. The Company&#8217;s deferred compensation plan assets, included in Other assets, are invested in a diversified portfolio of stock and bond mutual funds.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b></b></p><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Recent Accounting and Reporting Developments</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Accounting Changes</i></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> October 2021, </em>the Financial Accounting Standards Board (&#8220;FASB&#8221;) issued Accounting Standards Update (&#8220;ASU&#8221;) <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2021&#8209;08,</em> &#8220;Business Combinations (Topic&#160;<em style="font: inherit;">805</em>): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2021&#8209;08&#8221;</em>) which requires an entity to recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Accounting Standards Codification Topic&#160;<em style="font: inherit;">606,</em> &#8220;Revenue from Contracts with Customers,&#8221; as if it had originated the contracts. The Company adopted ASU&#160;<em style="font: inherit;">2021&#8209;08</em> on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1,</em> <em style="font: inherit;">2023</em> and the impact was <em style="font: inherit;">not</em> material to the Company&#8217;s financial position, results of operations, or cash flows.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Recent Accounting Standards</i></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> March 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;01</em> &#8220;Leases (Topic&#160;<em style="font: inherit;">842</em>): Common Control Arrangements&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;01&#8221;</em>) which requires leasehold improvements associated with common control leases be (<em style="font: inherit;">1</em>)&#160;amortized by the lessee over the useful life of the leasehold improvements to the common control group as long as the lessee controls the use of the underlying asset through a lease and (<em style="font: inherit;">2</em>)&#160;accounted for as a transfer between entities under common control through an adjustment to equity if, and when, the lessee <em style="font: inherit;">no</em> longer controls the use of the underlying asset. ASU&#160;<em style="font: inherit;">2023&#8209;01</em> is effective for the Company beginning <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1,</em> <em style="font: inherit;">2024,</em> including interim periods in <em style="font: inherit;">2024,</em> with early adoption permitted. The Company does <em style="font: inherit;">not</em> expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> October 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;06,</em> &#8220;Disclosure Improvements: Codification Amendments in Response to the SEC&#8217;s Disclosure Update and Simplification Initiative&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;06&#8221;</em>) which incorporates certain SEC disclosure requirements into the Accounting Standards Codification. The effective date for each amendment in ASU&#160;<em style="font: inherit;">2023&#8209;06</em> will be the effective date of the removal of the disclosure requirement from Regulation&#160;S&#8209;X or Regulation&#160;S&#8209;K, with early adoption prohibited. The amendments should be applied prospectively. The Company does <em style="font: inherit;">not</em> expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> November 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;07,</em> &#8220;Segment Reporting (Topic&#160;<em style="font: inherit;">280</em>): Improvements to Reportable Segment Disclosures&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;07&#8221;</em>) which requires disclosure of incremental segment information, primarily through enhanced disclosures about significant segment expenses, on an annual and interim basis for all public entities. ASU&#160;<em style="font: inherit;">2023&#8209;07</em> will be applied retrospectively, and will be effective for the Company&#8217;s <em style="font: inherit;">2024</em> annual reporting, and for interim periods beginning in <em style="font: inherit;">2025,</em> with early adoption permitted. The Company does <em style="font: inherit;">not</em> expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> December 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;09,</em> &#8220;Income Taxes (Topic&#160;<em style="font: inherit;">740</em>): Improvements to Income Tax Disclosures&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;09&#8221;</em>) which improves the transparency, effectiveness, and comparability of income tax disclosures and allows investors to better assess, in their capital allocation decisions, how an entity&#8217;s worldwide operations and related tax risks and tax planning and operation opportunities affect its income tax rate and prospects for future cash flows. ASU&#160;<em style="font: inherit;">2023&#8209;09</em> will be applied prospectively, and will be effective for the Company&#8217;s <em style="font: inherit;">2025</em> annual reporting, with early adoption permitted. The Company is currently assessing the impact of ASU&#160;<em style="font: inherit;">2023&#8209;09</em> on its disclosures in the notes to the consolidated financial statements.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>

  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_SignificantAccountingPoliciesTextBlock">
<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 entire disclosure for all significant accounting policies of the reporting entity.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483426/235-10-50-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 235<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//235/tableOfContent<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;">us-gaap_SignificantAccountingPoliciesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>27
<FILENAME>R13.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968198240">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Business Combinations<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_BusinessCombinationDisclosureTextBlock', window );">Business Combination Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">3.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>BUSINESS COMB</b><b>INATIONS:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Park Environmental Equipment,</b>&#160;<b>LLC</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">5,</em> <em style="font: inherit;">2021,</em> the Company completed the acquisition of 100% of Park Environmental Equipment,&#160;LLC (&#8220;ParkUSA&#8221;) for a purchase price of $90.2&#160;million in cash, which is included in the Precast segment for all periods following the acquisition date. ParkUSA is a precast concrete and steel fabrication-based company that develops and manufactures water, wastewater, and environmental solutions. Operations continue with ParkUSA&#8217;s previous management and workforce at its <em style="font: inherit;">three</em> Texas manufacturing facilities located in Houston, Dallas, and San Antonio. This strategic acquisition provides a foothold into the water infrastructure technology market. As the Company employs similar operating capabilities at its existing facilities, it intends to explore strategic opportunities to expand ParkUSA&#8217;s value-added products within the organization.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes the purchase consideration and fair value of the assets acquired and liabilities assumed as of <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">5,</em> <em style="font: inherit;">2021</em> (in thousands):</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt 0pt 0pt 8pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Assets</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">278</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Trade and other receivables</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">11,034</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Inventories</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,773</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Prepaid expenses and other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">293</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Property and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,076</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating lease right-of-use assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">58,301</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">31,000</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Deferred income taxes</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">347</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total assets acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">122,102</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Liabilities</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Accounts payable</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,029</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Accrued liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,067</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">58,301</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total liabilities assumed</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">64,397</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">32,519</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Total purchase consideration</b></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">90,224</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The tangible and intangible assets acquired and liabilities assumed were recognized based on their estimated fair values on the acquisition date, with the excess purchase consideration recorded as goodwill. As a result of additional information obtained during the measurement period about facts and circumstances that existed as of the acquisition date, the Company recorded measurement period adjustments during the year ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2022</em> which resulted in a $1.8&#160;million increase in goodwill and purchase consideration related to the settlement of working capital. The measurement period for the ParkUSA acquisition was complete as of <em style="font: inherit;"> September&#160;</em><em style="font: inherit;">30,</em> <em style="font: inherit;">2022.</em></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes the components of the intangible assets acquired and their estimated useful lives:</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="vertical-align: bottom;"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Estimated Useful Life</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Fair Value</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom;"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(In years) </b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(In thousands) </b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Customer relationships</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">10.0</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">19,800</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Trade names and trademarks</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">10.0</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,600</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Patents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">21.0</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,300</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Backlog</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">0.6</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">300</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">10.4</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,000</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Goodwill arose from the acquisition of an assembled workforce, expansion of product offerings, and management&#8217;s industry know-how, and is deductible for tax purposes.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">The Company incurred transaction costs associated with this acquisition of $0, $0.1&#160;million, and $3.4&#160;million during the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em> and <em style="font: inherit;">2021</em>, respectively. These transaction costs are included in Selling, general, and administrative expense in the Consolidated Statements of Operations.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Unaudited Pro Forma Disclosures</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following unaudited pro forma summary presents the consolidated results of the Company as if the acquisition of ParkUSA had occurred on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1,</em> <em style="font: inherit;">2020</em> (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding-bottom: 1px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Year Ended December 31, 2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Net sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">384,872</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">15,780</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">This unaudited pro forma consolidated financial data is included only for the purpose of illustration and does <em style="font: inherit;">not</em> necessarily indicate what the operating results would have been if the acquisitions of ParkUSA had occurred on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1</em> of the year prior to the acquisition. Moreover, this information is <em style="font: inherit;">not</em> indicative of what the Company&#8217;s future operating results will be. The information prior to the acquisition is included based on prior accounting records maintained by ParkUSA. The pro forma amounts have been calculated after applying the Company&#8217;s accounting policies and adjusting the results of ParkUSA to reflect the additional depreciation and amortization that would have been charged assuming the fair value adjustments to property and equipment and intangible assets had been applied on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1</em> of the year prior to the acquisition. Adjustments also include an increase of interest expense as if the Company&#8217;s debt obtained in connection with the acquisitions of ParkUSA had been outstanding since <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1</em> of the year prior to the acquisition. The pro forma results for the year ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2021</em> include nonrecurring adjustments to add back the transaction costs incurred and the expense related to the revaluation of inventory acquired in those periods, since those costs are reflected in the preceding year on a pro forma basis. The provision for income taxes has also been adjusted for all periods, based upon the foregoing adjustments to historical results.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationDisclosureTextBlock">
<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 entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable).</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/disclosureRef<br> -Topic 805<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-5<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 805<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//805/tableOfContent<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;">us-gaap_BusinessCombinationDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>28
<FILENAME>R14.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966706736">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Inventories<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_InventoryDisclosureTextBlock', window );">Inventory Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">4.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>INVENTORIES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Inventories consist of the following (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Raw materials</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">68,110</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">47,978</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Work-in-process</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,912</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5,114</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Finished goods</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">11,911</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">15,773</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Supplies</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,296</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,164</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total inventories</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">91,229</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">71,029</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_InventoryDisclosureTextBlock">
<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 entire disclosure for inventory. Includes, but is not limited to, the basis of stating inventory, the method of determining inventory cost, the classes of inventory, and the nature of the cost elements included in inventory.</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/disclosureRef<br> -Topic 330<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//330/tableOfContent<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;">us-gaap_InventoryDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>29
<FILENAME>R15.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966671456">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Property and Equipment<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock', window );">Property, Plant and Equipment Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">5.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>PROPERTY AND EQUIPMENT:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Property and equipment, net consists of the following (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgb(255, 255, 255);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Land and improvements</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">25,064</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">23,981</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Buildings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">54,036</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">51,389</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Leasehold improvements</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,182</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,182</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Machinery and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">155,278</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">149,971</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Equipment under finance lease</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,519</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,849</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">246,079</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">232,372</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Less accumulated depreciation and amortization</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(126,359</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(117,856</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">119,720</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">114,516</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Construction in progress</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">24,235</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">18,650</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Property and equipment, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">143,955</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">133,166</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">All property and equipment is located in the United States, except for $18.2&#160;million and $19.0&#160;million of net property and equipment which is located in Mexico as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock">
<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 entire disclosure for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 360<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//360/tableOfContent<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -SubTopic 360<br> -Topic 958<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480321/958-360-50-6<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -SubTopic 360<br> -Topic 958<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480321/958-360-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -SubTopic 360<br> -Topic 958<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480321/958-360-50-7<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;">us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>30
<FILENAME>R16.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966617424">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Goodwill and Intangible Assets<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock', window );">Goodwill and Intangible Assets Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">6.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>GOODWILL AND INTANGIBLE ASSETS:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Goodwill</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has recorded goodwill of $55.5&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em> in connection with its business acquisitions within the Precast segment. The Company performed its annual goodwill impairment test as of <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">30,</em> <em style="font: inherit;">2023,</em> utilizing a qualitative analysis, and did <em style="font: inherit;">not</em> identify any potential impairment. It is possible that future changes in circumstances, judgments, or assumptions, including prolonged economic weakness or unexpected significant declines in Precast operating results or projections, <em style="font: inherit;"> may </em>result in goodwill impairment charges in the future.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Intangible Assets</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Intangible assets consist of the following (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Gross Carrying</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Accumulated</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Intangible</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Amount</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Amortization</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Assets, Net</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2023</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Customer relationships</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">27,831</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(7,315</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">20,516</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Trade names and trademarks</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,825</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(3,734</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,091</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Patents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,627</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(160</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,467</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">42,283</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(11,209</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,074</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2022</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Customer relationships</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">29,209</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(5,845</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">23,364</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Trade names and trademarks</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,825</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(2,490</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">10,335</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Patents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,627</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(81</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,546</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">329</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(310</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">19</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">43,990</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,726</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">35,264</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The estimated amortization expense for each of the next <em style="font: inherit;">five</em> years and thereafter is as follows (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Year ending December 31,</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,033</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2025</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,033</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2026</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,033</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2027</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,033</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2028</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,033</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Thereafter</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">10,909</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total amortization expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,074</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock">
<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 entire disclosure for goodwill and intangible assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//350/tableOfContent<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;">us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>31
<FILENAME>R17.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966655680">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 7 - Current Debt<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_LongTermDebtTextBlock', window );">Long-Term Debt [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b><em style="font: inherit;">7.</em></b></p> </td><td style="width: auto;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>CURRENT DEBT:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Interim Funding Agreement dated <em style="font: inherit;"> August&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2022</em> with Wells Fargo Equipment Finance, Inc. (&#8220;WFEF&#8221;), as amended <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">23,</em> <em style="font: inherit;">2023,</em> <em style="font: inherit;"> March&#160;</em><em style="font: inherit;">15,</em> <em style="font: inherit;">2023,</em> <em style="font: inherit;"> July&#160;</em><em style="font: inherit;">21,</em> <em style="font: inherit;">2023,</em> and <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2023</em> (together, the &#8220;IFA&#8221;), provides for aggregate interim funding advances up to $10.8&#160;million of equipment purchased for a new reinforced concrete pipe mill, to be converted into a term loan upon final delivery and acceptance of the financed equipment. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the outstanding balance of the IFA was $10.8&#160;million, which is classified as a current liability since there is <em style="font: inherit;">not</em> a firm commitment for long-term debt financing. The IFA bore interest at the term Secured Overnight Finance Rate (&#8220;SOFR&#8221;) plus 1.75% as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2022</em>. Effective <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2023,</em> the IFA bears interest at the SOFR Average plus 2.00%. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the weighted-average interest rate for outstanding borrowings was 7.08% and 5.87%, respectively. The IFA requires monthly payments of accrued interest and grants a security interest in the equipment to WFEF. Effective <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2023,</em> the IFA requires the Company to maintain a consolidated senior leverage ratio <em style="font: inherit;">no</em> greater than 3.00 to <em style="font: inherit;">1.00</em> (subject to certain exceptions) and a minimum consolidated earnings before interest, taxes, depreciation, and amortization (&#8220;EBITDA&#8221;) (as defined in the IFA) of at least $35&#160;million for the <em style="font: inherit;">four</em> consecutive fiscal quarters most recently ended. The Company was in compliance with its financial covenants as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_LongTermDebtTextBlock">
<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 entire disclosure for long-term debt.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 470<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//470/tableOfContent<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;">us-gaap_LongTermDebtTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>32
<FILENAME>R18.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966652240">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Credit Agreement<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_DebtDisclosureTextBlock', window );">Debt Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">8.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>CREDIT AGREEMENT:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Credit Agreement dated <em style="font: inherit;"> June&#160;</em><em style="font: inherit;">30,</em> <em style="font: inherit;">2021</em> with Wells Fargo Bank, National Association (&#8220;Wells Fargo&#8221;), as administrative agent, and the lenders from time to time party thereto, including the initial sole lender, Wells Fargo (the &#8220;Lenders&#8221;), as amended by the Incremental Amendment dated <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">22,</em> <em style="font: inherit;">2021,</em> the Second Amendment to Credit Agreement dated <em style="font: inherit;"> April&#160;</em><em style="font: inherit;">29,</em> <em style="font: inherit;">2022,</em> and the Third Amendment to Credit Agreement dated <em style="font: inherit;"> June&#160;</em><em style="font: inherit;">29,</em> <em style="font: inherit;">2023</em> (together, the &#8220;Amended Credit Agreement&#8221;), provides for a revolving loan, swingline loan, and letters of credit in the aggregate amount of up to $125&#160;million (&#8220;Revolver Commitment&#8221;), with an option for the Company to increase that amount by $50&#160;million, subject to provisions of the Amended Credit Agreement. The Amended Credit Agreement will expire, and all obligations outstanding will mature, on <em style="font: inherit;"> June&#160;</em><em style="font: inherit;">29,</em> <em style="font: inherit;">2028.</em> The Company <em style="font: inherit;"> may </em>prepay outstanding amounts at its discretion without penalty at any time, subject to applicable notice requirements. In conjunction with entering into the Credit Agreement on <em style="font: inherit;"> June&#160;</em><em style="font: inherit;">30,</em> <em style="font: inherit;">2021,</em> the Company terminated the Credit Agreement with Wells Fargo dated <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">25,</em> <em style="font: inherit;">2018,</em> as amended on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2020</em> by the Consent and Amendment <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">1</em> to Credit Agreement with Wells Fargo (together, the &#8220;Former Credit Agreement&#8221;), and all outstanding debt under the Former Credit Agreement, including long-term debt, was repaid.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Amended Credit Agreement contains customary representations and warranties, as well as customary affirmative and negative covenants, events of default, and indemnification provisions in favor of the Lenders. The negative covenants include restrictions regarding the incurrence of liens and indebtedness, annual capital expenditures, certain investments, acquisitions, and dispositions, and other matters, all subject to certain exceptions. The Amended Credit Agreement requires the Company to regularly provide financial information to Wells Fargo and to maintain a consolidated senior leverage ratio <em style="font: inherit;">no</em> greater than 3.00 to <em style="font: inherit;">1.00</em> (subject to certain exceptions) and a minimum consolidated EBITDA (as defined in the Amended Credit Agreement) of at least $35&#160;million for the <em style="font: inherit;">four</em> consecutive fiscal quarters most recently ended. Pursuant to the Amended Credit Agreement, the Company has also agreed that it will <em style="font: inherit;">not</em> sell, assign, or otherwise dispose or encumber, any of its owned real property. The occurrence of an event of default could result in the acceleration of the obligations under the Amended Credit Agreement. The Company was in compliance with its financial covenants as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company&#8217;s obligations under the Amended Credit Agreement are secured by a senior security interest in substantially all of the Company&#8217;s and its subsidiaries&#8217; assets.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Interest expense from revolving loan borrowings, current debt, long-term debt, and finance leases was $4.9&#160;million, net of amounts capitalized of $0.5&#160;million&#160;in <em style="font: inherit;">2023</em>, $3.6&#160;million, net of a nominal amount capitalized in <em style="font: inherit;">2022</em>, and $1.2&#160;million, net of amounts capitalized of $0.1&#160;million in <em style="font: inherit;">2021.</em></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Line of Credit (Revolving and Swingline Loans)</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> under the Amended Credit Agreement, the Company had $54.5&#160;million of outstanding revolving loan borrowings, $1.1&#160;million of outstanding letters of credit, and additional borrowing capacity of approximately $69&#160;million. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2022</em> under the Amended Credit Agreement, the Company had $83.7&#160;million of outstanding revolving loan borrowings and $1.1&#160;million of outstanding letters of credit. Revolving loans under the Amended Credit Agreement bear interest at rates related to, at the Company&#8217;s option and subject to the provisions of the Amended Credit Agreement, either: (i)&#160;Base Rate (as defined in the Amended Credit Agreement) plus the Applicable Margin&#894; (ii)&#160;Adjusted Term SOFR (as defined in the Amended Credit Agreement) plus the Applicable Margin&#894; or (iii)&#160;Adjusted Daily Simple SOFR (as defined in the Amended Credit Agreement) plus the Applicable Margin. The &#8220;Applicable Margin&#8221; is 1.75% to 2.35%, depending on the Company&#8217;s Consolidated Senior Leverage Ratio (as defined in the Amended Credit Agreement) and the interest rate option chosen. Interest on outstanding revolving loans is payable monthly. Swingline loans under the Amended Credit Agreement bear interest at the Base Rate plus the Applicable Margin. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the weighted-average interest rate for outstanding borrowings was 7.43% and 6.07%, respectively. The Amended Credit Agreement requires the payment of a commitment fee of between 0.30% and 0.40%, based on the amount by which the Revolver Commitment exceeds the average daily balance of outstanding borrowings (as defined in the Amended Credit Agreement). Such fee is payable monthly in arrears. The Company is also obligated to pay additional fees customary for credit facilities of this size and type.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtDisclosureTextBlock">
<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 entire disclosure for information about short-term and long-term debt arrangements, which includes amounts of borrowings under each line of credit, note payable, commercial paper issue, bonds indenture, debenture issue, own-share lending arrangements and any other contractual agreement to repay funds, and about the underlying arrangements, rationale for a classification as long-term, including repayment terms, interest rates, collateral provided, restrictions on use of assets and activities, whether or not in compliance with debt covenants, and other matters important to users of the financial statements, such as the effects of refinancing and noncompliance with debt covenants.</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/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1B<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(c))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 470<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//470/tableOfContent<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1B<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1B<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1B<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1C<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1C<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1C<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1C<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1C<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1C<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1E<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1E<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1I<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1I<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1I<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1I<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1I<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1I<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;">us-gaap_DebtDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>33
<FILENAME>R19.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966619856">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Leases<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_LesseeLeaseDisclosureTextBlock', window );">Lessee, Lease, Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"><b><em style="font: inherit;">9.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"><b>LEASES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes the Company&#8217;s leases recorded on the Consolidated Balance Sheets (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Right-of-use assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases, net, included in Property and equipment (1)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">7,092</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,618</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">88,155</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">93,124</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total right-of-use assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">95,247</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">95,742</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Lease liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">7,481</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,037</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">90,216</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">94,174</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">97,697</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">97,211</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 27pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">(<em style="font: inherit;">1</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Finance lease right-of-use assets are presented net of accumulated amortization of $1.4&#160;million and $1.2&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Lease cost consists of the following (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Finance lease cost:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Amortization of right-of-use assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">795</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">577</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">413</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Interest on lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">266</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">148</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">90</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Operating lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">7,765</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">7,770</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,627</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Short-term lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,402</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,000</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">993</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Variable lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">313</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">251</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">158</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,541</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9,746</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">6,281</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The future maturities of lease liabilities as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> are as follows (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Finance Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Operating Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,212</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,874</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2025</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,923</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,913</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2026</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,847</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,583</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2027</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,614</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,192</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2028</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,147</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,308</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Thereafter</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">76,453</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total lease payments</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,743</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">109,323</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Amount representing interest</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,262</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(19,107</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Present value of lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">7,481</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">90,216</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Current portion of lease liabilities (1)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,721</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(4,933</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Long-term lease liabilities (2)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">5,760</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">85,283</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 18pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">(<em style="font: inherit;">1</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Current portion of finance lease liabilities are included in Accrued liabilities.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 18pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;">(<em style="font: inherit;">2</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">Long-term finance lease liabilities, less current portion are included in Other long-term liabilities.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The following table summarizes the lease terms and discount rates for the lease liabilities:</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Weighted-average remaining lease term (years)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3.90</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3.52</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">16.73</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">17.83</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Weighted-average discount rate</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6.93</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5.44</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2.17</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2.19</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The following table presents other information related to the operating and finance leases (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Cash paid for amounts included in the measurement of lease liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating cash flows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(266</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(148</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(90</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating cash flows from operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(6,930</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(6,818</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(4,142</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financing cash flows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(826</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(597</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(415</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Right-of-use assets obtained in exchange for finance lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5,270</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,466</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">853</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Right-of-use assets obtained in exchange for operating lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">952</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">568</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">16,043</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_LesseeLeaseDisclosureTextBlock">
<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 entire disclosure for leases of lessee.</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;">nwpx_LesseeLeaseDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>34
<FILENAME>R20.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966701136">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 10 - Fair Value Measurements<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_FairValueDisclosuresTextBlock', window );">Fair Value Disclosures [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">10.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>FAIR VALUE MEASUREMENTS:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Fair value is defined as the price that would be received to sell an asset or paid to transfer a liability, in the principal or most advantageous market for the asset or liability, in an orderly transaction between market participants at the measurement date.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The authoritative guidance establishes a fair value hierarchy that prioritizes the inputs to valuation techniques used to measure fair value into <em style="font: inherit;">three</em> broad levels. These levels are: Level&#160;<em style="font: inherit;">1</em> (inputs are quoted prices in active markets for identical assets or liabilities); Level&#160;<em style="font: inherit;">2</em> (inputs are other than quoted prices that are observable, either directly or indirectly through corroboration with observable market data); and Level&#160;<em style="font: inherit;">3</em> (inputs are unobservable, with little or <em style="font: inherit;">no</em> market data that exists, such as internal financial forecasts). The Company is required to maximize the use of observable inputs and minimize the use of unobservable inputs when measuring fair value.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes information regarding the Company&#8217;s financial assets and liabilities that are measured at fair value on a recurring basis (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Level 1</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Level 2</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Level 3</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2023</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Deferred compensation plan</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,912</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,391</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">521</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">42</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">42</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Interest rate swaps</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">326</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">326</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt; text-indent: -9pt;">Total financial assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,280</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,391</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">889</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(115</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(115</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2022</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Deferred compensation plan</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,587</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,090</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">497</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">728</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">728</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Interest rate swaps</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">862</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">862</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt; text-indent: -9pt;">Total financial assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">5,177</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,090</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2,087</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(80</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(80</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The deferred compensation plan assets consist of cash and several publicly traded stock and bond mutual funds, valued using quoted market prices in active markets, classified as Level&#160;<em style="font: inherit;">1</em> within the fair value hierarchy, as well as guaranteed investment contracts, valued at principal plus interest credited at contract rates, classified as Level&#160;<em style="font: inherit;">2</em> within the fair value hierarchy. Deferred compensation plan assets are included within Other assets in the Consolidated Balance Sheets.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The foreign currency forward contracts and interest rate swaps are derivatives valued using various pricing models or discounted cash flow analyses that incorporate observable market parameters, such as interest rate yield curves and currency rates, and are classified as Level&#160;<em style="font: inherit;">2</em> within the fair value hierarchy. Derivative valuations incorporate credit risk adjustments that are necessary to reflect the probability of default by the counterparty or the Company. The foreign currency forward contracts and interest rate swaps are presented at their gross fair values. Foreign currency forward contract and interest rate swap assets are included within Prepaid expenses and other and foreign currency forward contract liabilities are included within Accrued liabilities in the Consolidated Balance Sheets.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The net carrying amounts of cash and cash equivalents, trade and other receivables, accounts payable, accrued liabilities, and current debt approximate fair value due to the short-term nature of these instruments. The net carrying amount of the borrowings on the line of credit approximates fair value due to its variable interest rate based on market.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_FairValueDisclosuresTextBlock">
<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 entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information.</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/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482106/820-10-50-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;">us-gaap_FairValueDisclosuresTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>35
<FILENAME>R21.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960785248">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Derivative Instruments and Hedging Activities<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock', window );">Derivative Instruments and Hedging Activities Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">11.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>DERIVATIVE INSTRUMENTS AND HEDGING ACTIVITIES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">For each derivative entered into in which the Company seeks to obtain cash flow hedge accounting treatment, the Company formally documents all relationships between hedging instruments and hedged items, as well as its risk management objective and strategy for undertaking the hedge transaction, the nature of the risk being hedged, how the hedging instrument&#8217;s effectiveness in offsetting the hedged risk will be assessed prospectively and retrospectively, and a description of the method of measuring ineffectiveness. This process includes linking all derivatives to specific firm commitments or forecasted transactions and designating the derivatives as cash flow hedges. The Company also formally assesses, both at the hedge&#8217;s inception and on an ongoing basis, whether the derivatives that are used in hedging transactions are highly effective in offsetting changes in cash flows of hedged items. The effective portion of these hedged items is reflected in Unrealized gain (loss) on cash flow hedges on the Consolidated Statements of Comprehensive Income. If it is determined that a derivative is <em style="font: inherit;">not</em> highly effective, or that it has ceased to be a highly effective hedge, the Company is required to discontinue hedge accounting with respect to that derivative prospectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the total notional amount of the foreign currency forward contracts was $5.1&#160;million (CAD$6.7&#160;million) and $1.2&#160;million (EUR&#8364;1.1&#160;million), which included $4.9&#160;million (CAD$6.4&#160;million) and $1.2&#160;million (EUR&#8364;1.1&#160;million) of foreign currency forward contracts <em style="font: inherit;">not</em> designated as cash flow hedges. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2022</em>, the total notional amount of the foreign currency forward contracts was $17.1&#160;million (CAD$23.2&#160;million) and $1.1&#160;million (EUR&#8364;1.1&#160;million), which included $0.3&#160;million (CAD$0.4&#160;million) of foreign currency forward contracts <em style="font: inherit;">not</em> designated as cash flow hedges. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company&#8217;s foreign currency forward contracts mature at various dates through <em style="font: inherit;"> April 2025 </em>and are subject to an enforceable master netting arrangement.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has entered into interest rate swaps which effectively convert a portion of its variable-rate debt to fixed-rate debt, and are designated as cash flow hedges. The Company receives floating interest payments monthly based on SOFR and pays a fixed rate of 1.941% to the counterparty on the total notional amount of $6.7&#160;million and $26.7&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively, which amortizes ratably on a monthly basis to <em style="font: inherit;">zero</em> by the <em style="font: inherit;"> April 2024 </em>maturity date.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On <em style="font: inherit;"> August&#160;</em><em style="font: inherit;">9,</em> <em style="font: inherit;">2022,</em> the Company entered into an interest rate swap transaction which began <em style="font: inherit;"> April&#160;</em><em style="font: inherit;">3,</em> <em style="font: inherit;">2023.</em> The Company receives floating interest payments monthly based on the SOFR Average <em style="font: inherit;">30</em>&#160;day and pays a fixed rate of 2.96% to the counterparty on the total notional amount of $13.0&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, which amortizes ratably on a monthly basis to <em style="font: inherit;">zero</em> by the <em style="font: inherit;"> April 2028 </em>maturity date.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes the gains (losses) recognized on derivatives in the Consolidated Financial Statements (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Foreign currency forward contracts:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Net sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(708</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">660</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Property and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(109</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(680</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Interest rate swaps:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Interest expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">719</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">39</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(98</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">19</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, unrealized pretax gains (losses) on outstanding cash flow hedges in Accumulated other comprehensive loss was $0.3&#160;million, of which approximately $0 and $0.3&#160;million are expected to be reclassified to Net sales and Interest expense, respectively, within the next <em style="font: inherit;">twelve</em> months as a result of underlying hedged transactions also being recorded in these line items. See Note&#160;<em style="font: inherit;">18</em> &#8220;Accumulated Other Comprehensive Loss&#8221; for additional quantitative information regarding foreign currency forward contract and interest rate swap gains and losses.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock">
<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 entire disclosure for derivative instruments and hedging activities including, but not limited to, risk management strategies, non-hedging derivative instruments, assets, liabilities, revenue and expenses, and methodologies and assumptions used in determining the amounts.</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/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480237/815-40-50-5<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5C<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-5C<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 815<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//815/tableOfContent<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;">us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>36
<FILENAME>R22.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966606336">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stockholders' Equity<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_StockholdersEquityNoteDisclosureTextBlock', window );">Equity [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b><em style="font: inherit;">12.</em></b></p> </td><td style="width: auto;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>STOCKHOLDERS</b>&#8217; <b>EQUITY:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><i>At-the-Market Offering</i></b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On <em style="font: inherit;"> September&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2022,</em> the Company entered into an Open Market Sale Agreement (the &#8220;At-the-Market Offering&#8221;) with Jefferies LLC (&#8220;Jefferies&#8221;) which provided for the issuance and sale of shares of its common stock, par value $0.01 per share, having aggregate offering sales proceeds of up to $50&#160;million from time to time through Jefferies as its sales agent. On <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">30,</em> <em style="font: inherit;">2023,</em> the Company provided written notice terminating the Open Market Sale Agreement in accordance with its terms. <em style="font: inherit;">No</em> proceeds were raised under the At-the-Market Offering during the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> or <em style="font: inherit;">2022</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b><i>Share Repurchase Program</i></b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">On <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">2,</em> <em style="font: inherit;">2023,</em> the Company announced its authorization of a share repurchase program of up to $30&#160;million of its outstanding common stock. The program does <em style="font: inherit;">not</em> commit to any particular timing or quantity of purchases, and the program <em style="font: inherit;"> may </em>be suspended or discontinued at any time. Under the program, shares <em style="font: inherit;"> may </em>be purchased in open market, including through Rule&#160;<em style="font: inherit;">10b5&#8209;1</em> of the Securities Exchange Act of <em style="font: inherit;">1934,</em> as amended, or in privately negotiated transactions administered by its broker, D.A. Davidson Companies. At this time, the Company has elected to limit its share repurchase transactions to only those under the Rule&#160;<em style="font: inherit;">10b5&#8209;1</em> trading plan it executed in <em style="font: inherit;"> November 2023, </em>which the Company believes considers its liquidity, including availability of borrowings and covenant compliance under the Amended Credit Agreement, and other capital allocation priorities of the business. The Company&#8217;s Rule&#160;<em style="font: inherit;">10b5&#8209;1</em> trading plan designates up to $10&#160;million for repurchases and provides for daily share repurchases that fluctuate with changes in the trading price of its common stock.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">During the year ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company repurchased approximately 29,000&#160;shares of the Company&#8217;s common stock for an aggregate amount of $0.8&#160;million. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, $29.2&#160;million of the share repurchase authorization remained available for repurchases under this program. There were no share repurchases authorized during the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2022</em> or <em style="font: inherit;">2021</em>.</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_StockholdersEquityNoteDisclosureTextBlock">
<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 entire disclosure for equity.</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/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-13<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-13<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 14<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-14<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 235<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481062/946-235-50-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 235<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481062/946-235-50-2<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 505<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481004/946-505-50-6<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480237/815-40-50-6<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480008/505-10-S99-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(e)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 10: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//505/tableOfContent<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-13<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-13<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-13<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 14<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-14<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 14<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-14<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 16<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-16<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 18<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-18<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 18<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-18<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 18<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-18<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;">us-gaap_StockholdersEquityNoteDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>37
<FILENAME>R23.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966706736">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Retirement Plans<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock', window );">Retirement Benefits [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">13.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>RETIREMENT PLANS:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Defined Contribution Plan</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has a defined contribution retirement plan that covers substantially all of its employees and provides for a Company match of up to 50% of the <em style="font: inherit;">first</em> 8% of employee contributions to the plan, subject to certain limitations.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">ParkUSA had a defined contribution retirement plan that covered substantially all of its employees and provided for a match of up to 100% of the <em style="font: inherit;">first</em> 4% of employee contributions to the plan, subject to certain limitations. After the acquisition of ParkUSA on <em style="font: inherit;"> October&#160;</em><em style="font: inherit;">5,</em> <em style="font: inherit;">2021,</em> employees of ParkUSA continued to contribute to this plan until it was merged into the Company&#8217;s plan effective <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2021.</em></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Defined Benefit Plans</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has <span style="-sec-ix-hidden:c107876182">two</span> noncontributory defined benefit plans. Effective <em style="font: inherit;">2001,</em> both plans were frozen and participants were fully vested in their accrued benefits as of the date each plan was frozen. <em style="font: inherit;">No</em> additional participants can be added to the plans and <em style="font: inherit;">no</em> additional service can be earned by participants subsequent to the date the plans were frozen. The funding policy for both of these plans is based on current plan costs plus amortization of the unfunded plan liability.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the Company had recorded, in accordance with the actuarial valuations, an accrued pension asset of $0.5&#160;million and $0.1&#160;million, respectively, in Other long-term assets, and an unrecognized actuarial loss, net of tax, of $1.2&#160;million and $1.5&#160;million, respectively, in Accumulated other comprehensive loss. Additionally, as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the projected and accumulated benefit obligation was $4.6&#160;million and $4.8&#160;million, respectively, and the fair value of plan assets was $5.1&#160;million and $4.9&#160;million, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The net periodic benefit cost was approximately $0, $0.1&#160;million, and $0.1&#160;million for each of the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em>, respectively. The weighted-average discount rates used to measure the projected benefit obligation were 4.69% and 4.89% as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The plan assets are invested in pooled separate accounts stated at fair value based on the daily net asset value of the account and are therefore <em style="font: inherit;">not</em> categorized in the fair value hierarchy. The expected weighted-average long-term rate of return on plan assets was 7.00% as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Non-qualified Retirement Savings Plan</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has a deferred compensation plan that covered officers and selected highly compensated employees until it was frozen in <em style="font: inherit;">2016.</em> As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, deferred compensation plan balances of $3.9&#160;million and $3.6&#160;million, respectively, were recorded in Other assets and Other long-term liabilities.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Total expense for all retirement plans for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em> was $2.5&#160;million, $2.2&#160;million, and $1.8&#160;million, respectively, and is primarily related to the defined contribution plan.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock">
<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 entire disclosure for retirement benefits.</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/disclosureRef<br> -Topic 715<br> -SubTopic 70<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480794/715-70-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 17<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480482/715-20-55-17<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(iv)(03)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (q)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (l)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//715/tableOfContent<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(iii)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (o)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (p)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (r)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (r)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480126/715-20-S99-2<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480266/715-60-50-3<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;">us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>38
<FILENAME>R24.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966587968">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Share-based Compensation<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock', window );">Share-Based Payment Arrangement [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">14.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>SHARE-BASED COMPENSATION:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has one active stock incentive plan for employees and directors, the <em style="font: inherit;">2022</em> Stock Incentive Plan, which provides for awards of stock options to purchase shares of common stock, stock appreciation rights, restricted and unrestricted shares of common stock, RSUs, and PSAs. In addition, the Company has <span style="-sec-ix-hidden:c107876233">one</span> inactive stock incentive plan, the <em style="font: inherit;">2007</em> Stock Incentive Plan, under which previously granted awards remain outstanding.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes share-based compensation expense recorded (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Cost of sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,027</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,320</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,003</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Selling, general, and administrative expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,645</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,382</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,213</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,672</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,702</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,216</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">There were 722,573&#160;shares of common stock available for future issuance under the Company&#8217;s stock incentive plan as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, assuming the outstanding PSAs vest at the target level of 100%.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Restricted Stock Units and Performance Share Awards</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company&#8217;s stock incentive plan provides for equity instruments, such as RSUs and PSAs, which grant the right to receive a specified number of shares at specified times. RSUs and PSAs are service-based awards that vest according to the terms of the grant. PSAs have performance-based payout conditions.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">The following table summarizes the Company&#8217;s RSU and PSA activity:</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Number of RSUs and PSAs (1)</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted- Average Grant Date Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unvested RSUs and PSAs as of December 31, 2022</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">200,924</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">30.80</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">RSUs and PSAs granted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">134,498</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">28.41</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Unvested RSUs and PSAs canceled</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(13,589</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">30.82</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">RSUs and PSAs vested (2)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(95,442</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">30.12</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unvested RSUs and PSAs as of December 31, 2023</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">226,391</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">29.66</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 18pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">(<em style="font: inherit;">1</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">The number of PSAs disclosed in this table are at the target level of 100%.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 18pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">(<em style="font: inherit;">2</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">For the PSAs vested on <em style="font: inherit;"> March&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023,</em> the actual number of common shares that were issued was determined by multiplying the PSAs at the target level of <em style="font: inherit;">100%,</em> as disclosed in this table, by a payout percentage based on the performance-based conditions achieved. The payout percentage was 159% for the <em style="font: inherit;">2020</em>-<em style="font: inherit;">2022</em> performance period, 126% for the <em style="font: inherit;">2021</em>-<em style="font: inherit;">2022</em> performance period, and 132% for the <em style="font: inherit;">2022</em> performance period.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The unvested balance of RSUs and PSAs as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> includes approximately 170,000&#160;PSAs at the target level of <span style="-sec-ix-hidden:c107876257">100%.</span> The vesting of these awards is subject to the achievement of specified performance-based conditions, and the actual number of common shares that will ultimately be issued will be determined by multiplying this number of PSAs by a payout percentage ranging from 0% to 200%.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The weighted-average grant date fair value of RSUs and PSAs granted during the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em> was $28.41, $30.68, and $33.30, respectively. The total fair value of RSUs and PSAs vested during the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em> was $4.4&#160;million, $2.4&#160;million, and $3.3&#160;million, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Based on the estimated level of achievement of the performance targets associated with the PSAs as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, unrecognized compensation expense related to the unvested portion of the Company&#8217;s RSUs and PSAs was $3.0&#160;million, which is expected to be recognized over a weighted-average period of 1.5&#160;years.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Stock Awards</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">For the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em>, stock awards of 15,904&#160;shares, 11,380&#160;shares, and 12,606&#160;shares, respectively, were granted to non-employee directors, which vested immediately upon issuance. The Company recorded compensation expense based on the weighted-average fair market value per share of the awards on the grant date of $29.51 in <em style="font: inherit;">2023</em>, $30.75 in <em style="font: inherit;">2022</em>, and $30.94 in <em style="font: inherit;">2021</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock">
<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 entire disclosure for share-based payment arrangement.</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/exampleRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//718/tableOfContent<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(2)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (l)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>39
<FILENAME>R25.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920969233008">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Commitments and Contingencies<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock', window );">Commitments and Contingencies Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">15.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>COMMITMENTS AND CONTINGENCIES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Portland Harbor Superfund Site</b></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;">2000,</em> a section of the lower Willamette River known as the Portland Harbor Superfund Site was included on the National Priorities List at the request of the United States Environmental Protection Agency (&#8220;EPA&#8221;). While the Company&#8217;s Portland, Oregon manufacturing facility does <em style="font: inherit;">not</em> border the Willamette River, an outfall from the facility&#8217;s stormwater system drains into a neighboring property&#8217;s privately owned stormwater system and slip. Also in <em style="font: inherit;">2000,</em> the Company was notified by the EPA and the Oregon Department of Environmental Quality (&#8220;ODEQ&#8221;) of potential liability under the Comprehensive Environmental Response, Compensation, and Liability Act (&#8220;CERCLA&#8221;). A remedial investigation and feasibility study of the Portland Harbor Superfund Site was directed by a group of 14 potentially responsible parties known as the Lower Willamette Group under agreement with the EPA. The EPA finalized the remedial investigation report in&#160;<em style="font: inherit;">2016,</em> and the feasibility study in <em style="font: inherit;">2016,</em> which identified multiple remedial alternatives. In <em style="font: inherit;">2017,</em> the EPA issued its Record of Decision selecting the remedy for cleanup at the Portland Harbor Superfund Site, which it believes will cost approximately $1&#160;billion at net present value and 13&#160;years to complete. The EPA has <em style="font: inherit;">not</em> yet determined who is responsible for the costs of cleanup or how the cleanup costs will be allocated among the more than 150 potentially responsible parties (&#8220;PRPs&#8221;). Because of the large number of potentially responsible parties and the variability in the range of remediation alternatives, the Company is unable to estimate an amount or an amount within a range of costs for its obligation with respect to the Portland Harbor Superfund Site matters, and <em style="font: inherit;">no</em> further adjustment to the Consolidated Financial Statements has been recorded as of the date of this filing.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The ODEQ is separately providing oversight of voluntary investigations and source control activities by the Company involving the Company&#8217;s site, which are focused on controlling any current &#8220;uplands&#8221; releases of contaminants into the Willamette River. <em style="font: inherit;">No</em> liabilities have been established in connection with these investigations because the extent of contamination and the Company&#8217;s responsibility for the contamination have <em style="font: inherit;">not</em> yet been determined.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Concurrent with the activities of the EPA and the ODEQ, the Portland Harbor Natural Resources Trustee Council (&#8220;Trustees&#8221;) sent some or all of the same parties, including the Company, a notice of intent to perform a Natural Resource Damage Assessment (&#8220;NRDA&#8221;) for the Portland Harbor Superfund Site to determine the nature and extent of natural resource damages under CERCLA Section&#160;<em style="font: inherit;">107.</em> The Trustees for the Portland Harbor Superfund Site consist of representatives from several Northwest Indian Tribes, <em style="font: inherit;">three</em> federal agencies, and <em style="font: inherit;">one</em> state agency. The Trustees act independently of the EPA and the ODEQ. The Trustees have encouraged potentially responsible parties to voluntarily participate in the funding of their injury assessments and several of those parties have agreed to do so. In <em style="font: inherit;">2014,</em> the Company agreed to participate in the injury assessment process, which included funding $0.4&#160;million of the assessment. The Company has <em style="font: inherit;">not</em> assumed any additional payment obligations or liabilities with the participation with the NRDA, nor does the Company expect to incur significant future costs in the resolution of the NRDA.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;">2017,</em> the Confederated Tribes and Bands of the Yakama Nation, a Trustee until they withdrew from the council in <em style="font: inherit;">2009,</em> filed a complaint against the potentially responsible parties including the Company to recover costs related to their own injury assessment and compensation for natural resources damages. The case has been stayed until <em style="font: inherit;">2025,</em> and the Company does <em style="font: inherit;">not</em> have sufficient information at this time to determine the likelihood of a loss in this matter or the amount of damages that could be allocated to the Company.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has insurance policies for defense costs, as well as indemnification policies it believes will provide reimbursement for the remediation assessed. However, the Company can provide <em style="font: inherit;">no</em> assurance that those policies will cover all of the costs which the Company <em style="font: inherit;"> may </em>incur.</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>All Sites</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company operates its facilities under numerous governmental permits and licenses relating to air emissions, stormwater runoff, and other environmental matters. The Company&#8217;s operations are also governed by many other laws and regulations, including those relating to workplace safety and worker health, principally the Occupational Safety and Health Act and regulations thereunder which, among other requirements, establish noise and dust standards. The Company believes it is in material compliance with its permits and licenses and these laws and regulations, and the Company does <em style="font: inherit;">not</em> believe that future compliance with such laws and regulations will have a material adverse effect on its financial position, results of operations, or cash flows.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Other Contingencies and Legal Proceedings</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">From time to time, the Company is party to a variety of legal actions, including claims, suits, complaints, and investigations arising out of the ordinary course of its business. The Company maintains insurance coverage against potential claims in amounts that are believed to be adequate. To the extent that insurance does <em style="font: inherit;">not</em> cover legal, defense, and indemnification costs associated with a loss contingency, the Company records accruals when such losses are considered probable and reasonably estimable. The Company believes that it is <em style="font: inherit;">not</em> presently a party to legal actions, the outcomes of which would have a material adverse effect on its business, financial condition, results of operations, or cash flows.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Commitments</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company&#8217;s commitments include approximately $1.2&#160;million remaining relating to its investment in the primary component of the new reinforced concrete pipe mill for which the Company has <em style="font: inherit;">not</em> yet received the equipment and approximately $5.2&#160;million remaining relating to the construction of a building for the new mill at the Company&#8217;s facility in Salt Lake City, Utah.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Guarantees</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has entered into certain letters of credit that total $1.1&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>. The letters of credit relate to workers&#8217; compensation insurance.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock">
<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 entire disclosure for commitments and contingencies.</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/disclosureRef<br> -Topic 440<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482648/440-10-50-4<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 450<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//450/tableOfContent<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 954<br> -SubTopic 440<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480327/954-440-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 440<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482648/440-10-50-4<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 440<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//440/tableOfContent<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;">us-gaap_CommitmentsAndContingenciesDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>40
<FILENAME>R26.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966708400">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Revenue<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_RevenueFromContractWithCustomerTextBlock', window );">Revenue from Contract with Customer [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">16.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>REVENUE:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Net sales by geographic region, based on the location of the customer, were as follows (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Net sales by geographic region:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">United States</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">420,925</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">423,961</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">313,729</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Canada</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">23,430</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">33,704</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">19,584</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">444,355</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">457,665</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">333,313</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">One SPP customer accounted for 10%, 12%, and 12% of total net sales for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em>, respectively. No Precast customer accounted for more than <em style="font: inherit;">10%</em> of total net sales for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em>.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Net revisions in contract estimates resulted in an increase (decrease) in SPP net sales of ($1.1)&#160;million, ($0.6)&#160;million, and $2.0&#160;million for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, and <em style="font: inherit;">2021</em>, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Disaggregation of Revenue</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table disaggregates revenue by recognition over time or at a point in time, as the Company believes it best depicts how the nature, amount, timing, and uncertainty of its revenue and cash flows are affected by economic factors (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Over time</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">296,381</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">307,572</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">259,823</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Point in time</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">147,974</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">150,093</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">73,490</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Net sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">444,355</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">457,665</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">333,313</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Contract Assets and Contract Liabilities</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The difference between the opening and closing balances of the Company&#8217;s contract assets and contract liabilities primarily results from the timing difference between the Company&#8217;s performance and billings.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following is a summary of the changes in contract assets (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, beginning of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">121,778</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">107,170</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Revenue recognized in advance of billings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">291,812</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">306,095</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Billings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(293,356</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(294,506</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">282</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,019</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, end of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">120,516</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">121,778</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following is a summary of the changes in contract liabilities (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, beginning of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">17,456</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,623</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Billings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">20,815</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">17,618</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%; padding: 0; margin: 0"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Revenue recognized</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(16,984</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(2,663</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">163</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(122</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, end of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">21,450</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,456</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Backlog</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Backlog represents the balance of remaining performance obligations under signed contracts for SPP water infrastructure steel pipe products for which revenue is recognized over time. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, backlog was $273&#160;million. The Company expects to recognize approximately 76% of the remaining performance obligations in <span style="-sec-ix-hidden:c107876356">2024</span>, 23% in <span style="-sec-ix-hidden:c107876358">2025</span>, and the balance thereafter.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_RevenueFromContractWithCustomerTextBlock">
<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 entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts.</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/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-9<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-10<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-15<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-12<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-13<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Topic 606<br> -Publisher FASB<br> -URI https://asc.fasb.org//606/tableOfContent<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;">us-gaap_RevenueFromContractWithCustomerTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>41
<FILENAME>R27.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966589968">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Income Taxes<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_IncomeTaxDisclosureTextBlock', window );">Income Tax Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">17.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>INCOME TAXES:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The United States and foreign components of Income before income taxes are as follows (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">United States</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">27,814</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">40,271</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">14,000</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Foreign</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,465</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,079</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,158</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">29,279</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">41,350</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">15,158</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The components of Income tax expense are as follows (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Current:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Federal</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">6,817</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,443</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,256</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">State</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">1,519</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,264</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,064</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Foreign</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">289</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">198</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">213</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total current income tax expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">8,625</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9,905</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,533</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Deferred:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Federal</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(612</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(22</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">573</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">State</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">195</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">340</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(464</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Foreign</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(1</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(22</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(7</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total deferred income tax expense (benefit)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(418</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">296</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">102</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total income tax expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">8,207</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,201</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,635</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The difference between the Company&#8217;s effective income tax rate and the federal statutory income tax rate is explained as follows (dollar amounts in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Income tax expense at federal statutory rate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">6,148</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,683</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,183</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">State expense, net of federal income tax effect</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">942</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,463</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">547</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Change in valuation allowance</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(30</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(1</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(247</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Nondeductible expenses</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">257</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(35</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(31</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Foreign rate differential</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">133</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">97</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">104</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Accrued interest on uncertain income tax positions</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; background-color: rgba(0, 0, 0, 0); padding: 0; margin: 0">264</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">106</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">16</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">State franchise tax</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; background-color: rgba(0, 0, 0, 0); padding: 0; margin: 0">250</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">110</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">92</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">243</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(222</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(29</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Income tax expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">8,207</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,201</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,635</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Effective income tax rate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">28.0</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">24.7</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">24.0</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The income tax effect of temporary differences that give rise to significant portions of deferred income tax assets and liabilities is presented below (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Deferred income tax assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Accrued employee benefits</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">3,096</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,840</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Inventories</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">380</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">350</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Trade receivable, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">532</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">329</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Net operating loss carryforwards</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">3,429</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,944</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Tax credit carryforwards</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">2,777</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,863</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Contract assets, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">934</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">403</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">1,952</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,074</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">13,100</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">11,803</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Valuation allowance</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(6,641</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(6,051</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">6,459</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,752</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Deferred income tax liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Property and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(13,850</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(13,550</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(800</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(1,319</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(1,164</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(606</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Prepaid expenses</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(1,217</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,285</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(17,031</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(16,760</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Net deferred income tax liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(10,572</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(11,008</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Amounts are presented in the Consolidated Balance Sheets as follows:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Deferred income tax assets, included in Other assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">370</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">394</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Deferred income taxes</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(10,942</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(11,402</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Net deferred income tax liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(10,572</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(11,008</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">In assessing the ability to realize deferred income tax assets, management considers whether it is more likely than <em style="font: inherit;">not</em> that some portion or all of the deferred income tax assets will <em style="font: inherit;">not</em> be realized. The ultimate realization of deferred income tax assets is dependent upon the generation of future taxable income during the periods in which those temporary differences become deductible. Management considers the scheduled reversal of deferred income tax liabilities, projected future taxable income, taxable income in carryback periods, and tax planning strategies in making this assessment. The Company believes it is more likely than <em style="font: inherit;">not</em> it will realize the benefits of its deductible differences as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, net of any valuation allowance. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company continues to maintain a valuation allowance on federal tax credits and select state jurisdictions.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company had approximately $0.3&#160;million of federal income tax credit carryforwards, which expire on various dates between 2024 and 2026. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company also had approximately $18.4&#160;million of state net operating loss carryforwards, which expire on various dates between 2024 and 2036, and state income tax credit carryforwards of $4.4&#160;million, which began to expire in 2023. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, the Company also had approximately $8.4&#160;million of foreign net operating loss carryforwards, which expire on various dates between 2024 and 2033.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company files income tax returns in the United States Federal jurisdiction, in a limited number of foreign jurisdictions, and in many state jurisdictions. With few exceptions, the Company is <em style="font: inherit;">no</em> longer subject to United States Federal, state, or foreign income tax examinations for years before <span style="-sec-ix-hidden:c107876387">2019.</span></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">A summary of the changes in the unrecognized income tax benefits is presented below (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Unrecognized income tax benefits, beginning of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">4,472</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,366</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,350</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Increases for positions taken in prior years</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">264</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">106</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">16</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Unrecognized income tax benefits, end of year</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">4,736</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,472</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,366</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company does <em style="font: inherit;">not</em> believe it is reasonably possible that the total amounts of unrecognized income tax benefits will change in the following <em style="font: inherit;">twelve</em> months; however, actual results could differ from those currently expected. Effectively all of the unrecognized income tax benefits would affect the Company&#8217;s effective income tax rate if recognized at some point in the future.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company recognizes interest and penalties related to uncertain income tax positions in Income tax expense. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, the Company had $0.4&#160;million and $0.1&#160;million, respectively, of accrued interest related to uncertain income tax positions. Total interest for uncertain income tax positions did <em style="font: inherit;">not</em> change materially in <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, or <em style="font: inherit;">2021</em>.</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_IncomeTaxDisclosureTextBlock">
<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 entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information.</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/disclosureRef<br> -Topic 946<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480990/946-20-50-13<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//740/tableOfContent<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 14<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-14<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 21<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-21<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 270<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482526/740-270-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 17<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-17<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.5.Q1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 11.C)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-2<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482603/740-30-50-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;">us-gaap_IncomeTaxDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>42
<FILENAME>R28.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920965406928">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Accumulated Other Comprehensive Loss<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_ComprehensiveIncomeNoteTextBlock', window );">Comprehensive Income (Loss) Note [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"><b><em style="font: inherit;">18.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>ACCUMULATED OTHER COMPREHENSIVE LOSS:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Accumulated other comprehensive loss consists of the following (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Pension liability adjustment, net of income tax benefit of $<span style="-sec-ix-hidden:c107876544">482 </span>and $<span style="-sec-ix-hidden:c107876545">592</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(1,193</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(1,532</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain (loss) on foreign currency forward contracts designated as cash flow hedges, net of income tax (expense) benefit of $<span style="-sec-ix-hidden:c107876546">12 </span>and $(<span style="-sec-ix-hidden:c107876547">33</span>)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(13</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">94</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain on interest rate swaps designated as cash flow hedges, net of income tax expense of $<span style="-sec-ix-hidden:c107876548">79 </span>and $<span style="-sec-ix-hidden:c107876549">213</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">246</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">649</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(960</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(789</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table summarizes changes in the components of Accumulated other comprehensive loss (in thousands). All amounts are net of income tax:</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Pension Liability Adjustment</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Unrealized Gain (Loss) on Foreign Currency Forward Contracts Designated as Cash Flow Hedges</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Unrealized Gain on Interest Rate Swaps Designated as Cash Flow Hedges</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Balances, December 31, 2021</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,487</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(195</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,682</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other comprehensive income (loss) before reclassifications</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">41</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(100</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">678</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">619</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 36%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Amounts reclassified from Accumulated other comprehensive loss</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(86</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">389</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(29</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">274</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 36%;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Net current period adjustments to Other comprehensive income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(45</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">289</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">649</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">893</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Balances, December 31, 2022</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(1,532</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">94</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">649</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(789</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding: 0; margin: 0"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Other comprehensive income (loss) before reclassifications</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">338</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(115</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">142</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">365</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Amounts reclassified from Accumulated other comprehensive loss</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">1</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">8</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(545</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(536</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Net current period adjustments to Other comprehensive loss</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">339</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(107</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(403</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(171</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Balances, December 31, 2023</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(1,193</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(13</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">246</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(960</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table provides additional detail about Accumulated other comprehensive loss components that were reclassified to the Consolidated Statements of Operations (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Amount reclassified from Accumulated Other Comprehensive Loss</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Affected line item in the Consolidated</em></b></p> </td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"><b>Details about Accumulated Other</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Statements</em></b></p> </td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"><b>Comprehensive Loss Components</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">of Operations</em></b></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 34%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Pension liability adjustment:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Net periodic pension cost:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Service cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(13</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(13</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(7</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Cost of sales</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Non-service cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">11</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">127</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">110</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Other income</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Associated income tax (expense) benefit</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(28</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(25</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Income tax expense</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">86</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">78</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain (loss) on foreign currency forward contracts:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Gain (loss) on cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">99</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">163</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(72</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Net sales</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Loss on cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(109</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(680</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Property and equipment</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Associated income tax benefit</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">128</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">18</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Income tax expense</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(8</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(389</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(54</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain on interest rate swaps:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Gain on cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">719</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">39</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Interest expense</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Associated income tax expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(174</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(10</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"><em style="font: inherit;">Income tax expense</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">545</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">29</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 34%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Total reclassifications for the period</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">536</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(274</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">24</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNoteTextBlock">
<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 entire disclosure for comprehensive income, which includes, but is not limited to, 1) the amount of income tax expense or benefit allocated to each component of other comprehensive income, including reclassification adjustments, 2) the reclassification adjustments for each classification of other comprehensive income and 3) the ending accumulated balances for each component of comprehensive income.</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/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(21))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//220/tableOfContent<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;">us-gaap_ComprehensiveIncomeNoteTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>43
<FILENAME>R29.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966591552">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 19 - Segment Information<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_us-gaap_SegmentReportingDisclosureTextBlock', window );">Segment Reporting Disclosure [Text Block]</a></td>
<td class="text">
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 36pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b><em style="font: inherit;">19.</em></b></p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>SEGMENT INFORMATION:</b></p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The operating segments reported below are based on the nature of the products sold and the manufacturing process used by the Company and are the segments of the Company for which separate financial information is available and for which operating results are regularly evaluated by the Company&#8217;s chief operating decision maker, its Chief Executive Officer, to make decisions about resources to be allocated to the segment and assess its performance. Management evaluates segment performance based on gross profit. The Company does <em style="font: inherit;">not</em> allocate selling, general, and administrative expenses, interest, other non-operating income or expense items, or taxes to segments.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company&#8217;s Engineered Steel Pressure Pipe (SPP) segment manufactures large-diameter, high-pressure steel pipeline systems for use in water infrastructure applications, which are primarily related to drinking water systems. These products are also used for hydroelectric power systems, wastewater systems, seismic resiliency, and other applications. In addition, SPP makes products for industrial plant piping systems and certain structural applications. SPP has manufacturing facilities located in Portland, Oregon; Adelanto and Tracy, California; Parkersburg, West Virginia; Saginaw, Texas; St.&#160;Louis, Missouri; and San Luis R&#237;o Colorado, Mexico.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company&#8217;s Precast Infrastructure and Engineered Systems (Precast) segment manufactures stormwater and wastewater technology products, high-quality precast and reinforced concrete products, including reinforced concrete pipe, manholes, box culverts, vaults, and catch basins, pump lift stations, oil water separators, biofiltration units, and other environmental and engineered solutions. Precast has manufacturing facilities located in Dallas, Houston, and San Antonio, Texas; and Orem, Salt Lake City, and St. George, Utah.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>


   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table disaggregates revenue as well as other financial information based on the Company&#8217;s reportable segments (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Net sales:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">296,381</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">307,572</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">259,823</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">147,974</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">150,093</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">73,490</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">444,355</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">457,665</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">333,313</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Gross profit:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">42,427</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">44,473</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">31,281</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">35,215</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">41,382</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,973</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">77,642</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">85,855</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">44,254</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Depreciation and amortization expense:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,000</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,789</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,524</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,241</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,807</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,738</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">15,241</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">16,596</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">13,262</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Corporate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">565</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">507</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">362</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">15,806</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,103</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">13,624</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Capital expenditures:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">11,154</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">8,211</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">7,538</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">6,503</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">13,925</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">5,255</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">17,657</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">22,136</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,793</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Corporate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">634</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">693</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">469</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">18,291</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">22,829</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">13,262</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The following table disaggregates total assets based on the Company&#8217;s reportable segments (in thousands):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Total assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">307,856</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">307,924</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">255,904</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">256,520</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">563,760</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">564,444</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Corporate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">34,121</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">36,896</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">597,881</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">601,340</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><a href="#" id="notesend" title="notesend"></a></p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_SegmentReportingDisclosureTextBlock">
<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 entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments.</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/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-15<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 42<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-42<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 40<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-40<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//280/tableOfContent<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 26<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-26<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 34<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-34<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 41<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-41<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-21<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-21<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<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;">us-gaap_SegmentReportingDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>44
<FILENAME>R30.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966701136">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Schedule II - Valuation and Qualifying Accounts<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock', window );">SEC Schedule, 12-09, Schedule of Valuation and Qualifying Accounts Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Schedule</b>&#160;<b>II</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;"><b><a href="#" id="sched" title="sched"></a>NORTHWEST PIPE COMPANY</b></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;"><b>VALUATION AND QUALIFYING ACCOUNTS</b></p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;">(Dollars in thousands)</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Balance at Beginning of Period</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Charged to Profit and Loss</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Deduction from Reserves</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Balance at End of Period</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Year Ended December 31, 2023:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Allowance for doubtful accounts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">369</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">189</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(437</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">121</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Valuation allowance for deferred income tax assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,051</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">696</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(106</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,641</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Year Ended December 31, 2022:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Allowance for doubtful accounts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">503</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">442</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(576</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">369</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Valuation allowance for deferred income tax assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5,899</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">254</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(102</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,051</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Year Ended December 31, 2021:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Allowance for doubtful accounts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">767</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">653</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(917</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">503</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Valuation allowance for deferred income tax assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,228</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(329</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5,899</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock">
<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 entire disclosure for valuation and qualifying accounts and reserves.</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/disclosureRef<br> -Name Regulation S-X (SX)<br> -Number 210<br> -Section 12<br> -Subsection 09<br> -Publisher SEC<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-4<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;">srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>srt_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<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 );">- References</a><div><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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>45
<FILENAME>R31.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960879072">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Significant Accounting Policies (Policies)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [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_us-gaap_ConsolidationPolicyTextBlock', window );">Consolidation, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Basis of Consolidation and Presentation</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Consolidated Financial Statements are expressed in United States Dollars and include the accounts of the Company and its subsidiaries over which the Company exercises control as of the financial statement date. Intercompany accounts and transactions have been eliminated.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_UseOfEstimates', window );">Use of Estimates, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Use of Estimates</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The preparation of the Consolidated Financial Statements in conformity with accounting principles generally accepted in the United States of America (&#8220;U.S.&#160;GAAP&#8221;) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and disclosure of contingent assets and liabilities as of the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. The Company bases its estimates on historical experience and on various other assumptions that are believed to be reasonable under the circumstances. On an ongoing basis, the Company evaluates all of its estimates, including those related to business combinations, allowance for doubtful accounts, inventories, property and equipment (including depreciation and valuation), goodwill, intangible assets (including amortization), revenue recognition, share-based compensation, income taxes, and litigation and other contingencies. Actual results <em style="font: inherit;"> may </em>differ from these estimates under different assumptions or conditions.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_BusinessCombinationsPolicy', window );">Business Combinations Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Business Combinations</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Business combinations are accounted for under the acquisition method which requires identifiable assets acquired and liabilities assumed in the acquired business be recognized and measured at fair value on the acquisition date, which is the date that the acquirer obtains control of the acquired business. The amount by which the fair value of consideration transferred as the purchase price exceeds the net fair value of assets acquired and liabilities assumed is recorded as goodwill. The amount by which the net fair value of assets acquired and liabilities assumed exceeds the fair value of consideration transferred as the purchase price is recorded as a bargain purchase gain. Acquisition-related transaction costs are expensed as incurred.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">These estimates are inherently uncertain and unpredictable. In addition, unanticipated events and circumstances <em style="font: inherit;"> may </em>occur which <em style="font: inherit;"> may </em>affect the accuracy or validity of such estimates. As a result, during the measurement period, which <em style="font: inherit;"> may </em>be up to <em style="font: inherit;">one</em> year from the acquisition date, the Company <em style="font: inherit;"> may </em>record adjustments to the assets acquired and liabilities assumed with the corresponding offset to goodwill or bargain purchase gain. Upon the conclusion of the measurement period or final determination of the fair value of assets acquired or liabilities assumed, whichever comes first, any subsequent adjustments are recorded to the Company&#8217;s Consolidated Statements of Operations.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_CashAndCashEquivalentsPolicyTextBlock', window );">Cash and Cash Equivalents, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Cash and Cash Equivalents</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Cash and cash equivalents consist of cash and short-term, highly-liquid investments with maturities of <em style="font: inherit;">three</em> months or less when purchased. At times, the Company will have outstanding checks in excess of related bank balances (&#8220;book overdraft&#8221;). If this occurs, the amount of the book overdraft will be reclassified to accounts payable, and changes in the book overdraft will be reflected as a component of operating activities in the Consolidated Statements of Cash Flows. The Company had a book overdraft of $1.8&#160;million and $0.6&#160;million as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_ReceivablesPolicyTextBlock', window );">Receivable [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Receivables and Allowance for Doubtful Accounts</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Trade receivables are reported on the Consolidated Balance Sheets net of doubtful accounts. The Company maintains allowances for estimated losses resulting from the inability of its customers to make required payments or from contract disputes. The amounts of such allowances are based on historical experience and management&#8217;s judgment. The Company will write down or write off a receivable account once the account is deemed uncollectible. If the customers&#8217; financial conditions were to deteriorate resulting in their inability to make payments, or if contract disputes were to escalate, additional allowances <em style="font: inherit;"> may </em>need to be recorded which would result in additional expenses being recorded for the period in which such determination was made.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock', window );">Contract Assets and Liabilities, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Contract Assets and Contract Liabilities</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Contract assets primarily represent revenue earned over time but <em style="font: inherit;">not</em> yet billable based on the terms of the contracts. These amounts will be billed based on the terms of the contracts, which can include certain milestones, partial shipments, or completion of the contracts. Payment terms of amounts billed vary based on the customer, but are typically due within <em style="font: inherit;">30</em>&#160;days of invoicing. Contract liabilities represent advance billings on contracts, typically for steel.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_InventoryPolicyTextBlock', window );">Inventory, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Inventories</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Inventories are stated at the lower of cost and net realizable value. The cost of raw material inventories of steel is either on a specific identification basis or on an average cost basis. The cost of substantially all other raw material inventories, as well as work-in-process and supplies, is either on an average cost basis or at standard cost. The cost of finished goods uses the <em style="font: inherit;">first</em>-in, <em style="font: inherit;">first</em>-out method of accounting.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock', window );">Property, Plant and Equipment, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Property and Equipment</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Property and equipment are recorded at cost. Maintenance and repairs are expensed as incurred, and costs of new equipment and buildings, as well as costs of expansions or refurbishment of existing equipment and buildings, including interest where applicable, are capitalized. Depreciation and amortization are determined by the units of production method for most equipment and by the straight-line method for the remaining assets based on the estimated useful lives of the related assets. Estimated useful lives by major classes of property and equipment are as follows: Land improvements (15&#160;&#8211; 30&#160;years); Buildings (20&#160;&#8211; 40&#160;years); Leasehold improvements (5&#160;&#8211; 30&#160;years); and Machinery and equipment (3&#160;&#8211; 30&#160;years). Depreciation expense calculated under the units of production method <em style="font: inherit;"> may </em>be less than, equal to, or greater than depreciation expense calculated under the straight-line method due to variances in production levels. Upon disposal, costs and related accumulated depreciation of the assets are removed from the accounts and resulting gains or losses are reflected in operating expenses. The Company leases certain equipment under long-term finance leases, which are being amortized on a straight-line basis over the shorter of its useful life or the lease term.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company assesses impairment of property and equipment whenever changes in circumstances indicate that the carrying values of the asset or asset group(s) <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recoverable. The asset group is the lowest level at which identifiable cash flows are largely independent of the cash flows of other groups of assets or liabilities. The recoverable value of a long-lived asset group is determined by estimating future undiscounted cash flows using assumptions about the expected future operating performance of the Company.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_LesseeLeasesPolicyTextBlock', window );">Lessee, Leases [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Leases</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has entered into various equipment and property leases. Certain lease agreements include renewals and/or purchase options set to expire at various dates, and certain lease agreements include rental payments adjusted periodically for inflation. The Company&#8217;s lease agreements do <em style="font: inherit;">not</em> contain any material residual value guarantees or material restrictive covenants.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"></p>


   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">The Company determines if an arrangement is a lease at inception. Leases with an initial term of <em style="font: inherit;">twelve</em> months or less are <em style="font: inherit;">not</em> recorded on the balance sheet; costs for these leases are recognized on a straight-line basis over the lease term. Right-of-use assets and lease liabilities are recognized based on the present value of lease payments over the lease term at commencement date. When the Company&#8217;s leases do <em style="font: inherit;">not</em> provide an implicit rate of return, the Company uses its revolving loan borrowing rate in determining the present value of lease payments. Some of the Company&#8217;s lease agreements contain non-lease components, which are accounted for separately.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p><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_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy', window );">Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Goodwill</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Goodwill represents the excess of the purchase price over the fair values of the assets acquired and liabilities assumed in conjunction with an acquisition. Goodwill is reviewed for impairment annually, or whenever events occur or circumstances change that indicate goodwill <em style="font: inherit;"> may </em>be impaired. During the <em style="font: inherit;">fourth</em> quarter of <em style="font: inherit;">2022,</em> the Company changed the date of its annual impairment test of goodwill from <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31</em> to <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">30.</em> The change in the impairment test date lessens resource constraints that exist in connection with the Company&#8217;s year-end close and financial reporting process and provides for additional time to complete the required impairment testing. This change did <em style="font: inherit;">not</em> represent a material change to the Company&#8217;s method of applying an accounting principle, and therefore did <em style="font: inherit;">not</em> delay, accelerate, or avoid an impairment charge.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In testing goodwill for impairment, the Company has the option to perform a qualitative assessment to determine whether the existence of events or circumstances indicate that it is more-likely-than-<em style="font: inherit;">not</em> (more than <em style="font: inherit;">50%</em>) that the fair value of a reporting unit is less than its carrying amount. When performing a qualitative assessment, the Company evaluates factors such as industry and market conditions, cost factors, overall financial performance, and other relevant entity specific events and changes. If the qualitative assessment indicates that it is more-likely-than-<em style="font: inherit;">not</em> that the fair value of the reporting unit is less than its carrying amount, or if the Company chooses <em style="font: inherit;">not</em> to perform the qualitative assessment, then a quantitative assessment is performed to determine the reporting unit&#8217;s fair value. If the reporting unit&#8217;s carrying value exceeds its fair value, then an impairment loss is recognized for the amount of the excess of the carrying amount over the reporting unit&#8217;s fair value, <em style="font: inherit;">not</em> to exceed the total amount of goodwill allocated to the reporting unit.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy', window );">Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Intangible Assets</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Intangible assets consist primarily of customer relationships, trade names and trademarks, patents, and backlog recorded as the result of acquisition activity. Intangible assets are amortized using the straight-line method over estimated useful lives ranging from <span style="-sec-ix-hidden:c107875832">ten</span>&#160;to 21&#160;years.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_WorkersCompensationInsurancePolicyTextBlock', window );">Workers Compensation Insurance [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Workers Compensation</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company is self-insured and maintains high deductible policies for losses and liabilities associated with workers compensation claims. Losses are accrued based upon the Company&#8217;s estimates of the aggregate liability for claims incurred using historical experience and certain actuarial assumptions followed in the insurance industry. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, workers compensation reserves recorded were $2.2&#160;million and $1.6&#160;million, respectively, of which $1.3&#160;million and $0.5&#160;million, respectively, were included in Accrued liabilities and $0.9&#160;million and $1.1&#160;million, respectively, were included in Other long-term liabilities.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_AccruedLiabilitiesPolicyTextBlock', window );">Accrued Liabilities [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Accrued Liabilities</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Accrued liabilities as of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em> includes accrued bonus of $5.2&#160;million and $8.0&#160;million, respectively, and accrued sales tax of $5.3&#160;million and $4.4&#160;million, respectively.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_DerivativesPolicyTextBlock', window );">Derivatives, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Derivative Instruments</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In the normal course of business, the Company is exposed to interest rate and foreign currency exchange rate fluctuations. Consistent with the Company&#8217;s strategy for financial risk management, the Company has established a program that utilizes foreign currency forward contracts and interest rate swaps to offset the risks associated with the effects of these exposures. The Company utilizes cash flow hedge accounting treatment for qualifying foreign currency forward contracts and interest rate swaps. Instruments that do <em style="font: inherit;">not</em> qualify for cash flow hedge accounting treatment are remeasured at fair value on each balance sheet date and resulting gains and losses are recognized in earnings.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_StockholdersEquityPolicyTextBlock', window );">Stockholders' Equity, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Share Repurchases</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">All shares reacquired in connection with the Company&#8217;s share repurchase program are retired and treated as authorized and unissued shares.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_PensionAndOtherPostretirementPlansPolicy', window );">Pension and Other Postretirement Plans, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Pension Benefits</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company has <em style="font: inherit;">two</em> defined benefit pension plans that have been frozen since <em style="font: inherit;">2001.</em> The Company funds these plans to cover current plan costs plus amortization of the unfunded plan liabilities. To record these obligations, management uses estimates relating to investment returns, mortality, and discount rates.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p><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_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock', window );">Foreign Currency Transactions and Translations Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Foreign Currency Transactions</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The functional currency of the Company, including its Mexican operations, is the United States dollar. Monetary assets and liabilities are remeasured at current exchange rates and non-monetary assets and liabilities are remeasured at historical exchange rates. Revenue and expenses related to monetary assets and liabilities are remeasured at average exchange rates and at historical exchange rates for the revenue and expenses related to non-monetary assets and liabilities.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Transaction gains (losses) from foreign currency forward contracts designated as cash flow hedges are included in Accumulated other comprehensive loss as a separate component of Stockholders&#8217; equity. For the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em> and <em style="font: inherit;">2021</em>, net foreign currency transaction gains (losses) of $0.4&#160;million, $0.5&#160;million, and ($0.5)&#160;million, respectively, were recognized in earnings.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_RevenueRecognitionPolicyTextBlock', window );">Revenue [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Revenue Recognition</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company manufactures water infrastructure steel pipe products, which are generally made to custom specifications for installation contractors serving projects funded by public water agencies, as well as precast and reinforced concrete products. Generally, each of the Company&#8217;s contracts with its customers contains a single performance obligation, as the promise to transfer products is <em style="font: inherit;">not</em> separately identifiable from other promises in the contract and, therefore, is <em style="font: inherit;">not</em> distinct. The Company generally does <em style="font: inherit;">not</em> recognize revenue on a contract until the contract has approval and commitment from both parties, the contract rights and payment terms can be identified, the contract has commercial substance, and its collectability is probable.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">SPP revenue for water infrastructure steel pipe products is recognized over time as the manufacturing process progresses because of the Company&#8217;s right to payment for work performed to date plus a reasonable profit on cancellations for unique products that have <em style="font: inherit;">no</em> alternative use to the Company. Revenue is measured by the costs incurred to date relative to the estimated total direct costs to fulfill each contract (cost-to-cost method). Contract costs include all material, labor, and other direct costs incurred in satisfying the performance obligations. The cost of steel material is recognized as a contract cost when the steel is introduced into the manufacturing process. Changes in job performance, job conditions, and estimated profitability, including those arising from contract change orders, contract penalty provisions, foreign currency exchange rate movements, changes in raw materials costs, and final contract settlements <em style="font: inherit;"> may </em>result in revisions to estimates of revenue, costs, and income, and are recognized in the period in which the revisions are determined. Provisions for losses on uncompleted contracts, included in Accrued liabilities, are estimated by comparing total estimated contract revenue to the total estimated contract costs and a loss is recognized during the period in which it becomes probable and can be reasonably estimated.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Precast revenue for water infrastructure concrete pipe and precast concrete products is recognized at the time control is transferred to customers, in an amount that reflects the consideration the Company expects to be entitled to in exchange for the products. All variable consideration that <em style="font: inherit;"> may </em>affect the total transaction price, including contractual discounts, returns, and credits, is included in net sales. Estimates for variable consideration are based on historical experience, anticipated performance, and management&#8217;s judgment. The Company&#8217;s contracts do <em style="font: inherit;">not</em> contain significant financing.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy', window );">Share-Based Payment Arrangement [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Share-based Compensation</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company recognizes the compensation cost of employee and director services received in exchange for awards of equity instruments based on the grant date estimated fair value of the awards. The Company estimates the fair value of restricted stock units (&#8220;RSUs&#8221;) and performance share awards (&#8220;PSAs&#8221;) using the value of the Company&#8217;s stock on the date of grant. Share-based compensation cost is recognized over the period during which the employee or director is required to provide service in exchange for the award and, as forfeitures occur, the associated compensation cost recognized to date is reversed. For awards with performance-based payout conditions, the Company recognizes compensation cost based on the probability of achieving the performance conditions, with changes in expectations recognized as an adjustment to earnings in the period of change. Any recognized compensation cost is reversed if the conditions are ultimately <em style="font: inherit;">not</em> met.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_IncomeTaxPolicyTextBlock', window );">Income Tax, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Income Taxes</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Income taxes are recorded using an asset and liability approach that requires the recognition of deferred income tax assets and liabilities for the expected future income tax consequences of events that have been recognized in the Consolidated Financial Statements or income tax returns. Valuation allowances are established when necessary to reduce deferred income tax assets to the amount expected to be realized. The determination of the provision for income taxes requires significant judgment, the use of estimates, and the interpretation and application of complex tax laws. The provision for income taxes primarily reflects a combination of income earned and taxed in the various United States federal, state, local, and to a lesser extent, foreign jurisdictions. Jurisdictional tax law changes, increases or decreases in permanent differences between book and tax items, accruals or adjustments of accruals for unrecognized income tax benefits or valuation allowances, and the change in the mix of earnings from these taxing jurisdictions all affect the overall effective income tax rate.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">The Company records income tax reserves for federal, state, local, and international exposures relating to periods subject to audit. The development of reserves for these exposures requires judgments about tax issues, potential outcomes and timing, and is a subjective estimate. The Company assesses income tax positions and records income tax benefits for all years subject to examination based upon management&#8217;s evaluation of the facts, circumstances, and information available at the reporting dates. For those income tax positions where it is more-likely-than-<em style="font: inherit;">not</em> that an income tax benefit will be sustained, the Company has recorded the largest amount of income tax benefit with a greater than <em style="font: inherit;">50%</em> likelihood of being realized upon settlement with a tax authority that has full knowledge of all relevant information. For those income tax positions where it is <em style="font: inherit;">not</em> more-likely-than-<em style="font: inherit;">not</em> that an income tax benefit will be sustained, <em style="font: inherit;">no</em> income tax benefit has been recognized in the Consolidated Financial Statements.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock', window );">Comprehensive Income, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Accumulated Other Comprehensive Loss</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Accumulated other comprehensive loss includes unrealized gains and losses on derivative instruments related to the effective portion of cash flow hedges and changes in the funded status of the defined benefit pension plans, both net of the related income tax effect.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_EarningsPerSharePolicyTextBlock', window );">Earnings Per Share, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Net Income per Share</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Basic net income per share is computed by dividing the net income by the weighted-average number of shares of common stock outstanding during the period. Diluted net income per share is computed by giving effect to all dilutive potential shares of common stock, including RSUs and PSAs, assumed to be outstanding during the period using the treasury stock method. Performance-based PSAs are considered dilutive when the related performance conditions have been met assuming the end of the reporting period represents the end of the performance period. In periods with a net loss, all potential shares of common stock are excluded from the computation of diluted net loss per share as the impact would be antidilutive.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Net income per basic and diluted weighted-average common share outstanding was calculated as follows (in thousands, except per share amounts):</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">21,072</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,149</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">11,523</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Basic weighted-average common shares outstanding</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,991</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,914</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,854</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Effect of potentially dilutive common shares (1)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">90</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">98</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">74</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Diluted weighted-average common shares outstanding</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,081</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,012</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9,928</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net income per common share</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Basic</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.11</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3.14</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.17</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Diluted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.09</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3.11</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.16</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"><tbody><tr style="vertical-align: top;"><td style="width: 27pt;">&#160;</td><td style="width: 18pt;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">(<em style="font: inherit;">1</em>)</p> </td><td style="width: auto;"> <p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;">There were no antidilutive shares for the years ended <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em>, <em style="font: inherit;">2022</em>, or <em style="font: inherit;">2021</em>.</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_ConcentrationRiskCreditRisk', window );">Concentration Risk, Credit Risk, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Concentrations of Credit Risk</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">Financial instruments, which potentially subject the Company to concentrations of credit risk, consist principally of trade receivables, foreign currency forward contracts, interest rate swaps, and deferred compensation plan assets. Trade receivables generally represent a large number of customers, including municipalities, manufacturers, distributors, and contractors, dispersed across a wide geographic base. As of <em style="font: inherit;"> December&#160;</em><em style="font: inherit;">31,</em> <em style="font: inherit;">2023</em> and <em style="font: inherit;">2022</em>, one customer had a balance in excess of <em style="font: inherit;">10%</em> of total accounts receivable. Foreign currency forward contracts and interest rate swaps are with a high-quality financial institution. The Company&#8217;s deferred compensation plan assets, included in Other assets, are invested in a diversified portfolio of stock and bond mutual funds.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><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_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock', window );">New Accounting Pronouncements, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><b>Recent Accounting and Reporting Developments</b></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Accounting Changes</i></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> October 2021, </em>the Financial Accounting Standards Board (&#8220;FASB&#8221;) issued Accounting Standards Update (&#8220;ASU&#8221;) <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2021&#8209;08,</em> &#8220;Business Combinations (Topic&#160;<em style="font: inherit;">805</em>): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2021&#8209;08&#8221;</em>) which requires an entity to recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Accounting Standards Codification Topic&#160;<em style="font: inherit;">606,</em> &#8220;Revenue from Contracts with Customers,&#8221; as if it had originated the contracts. The Company adopted ASU&#160;<em style="font: inherit;">2021&#8209;08</em> on <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1,</em> <em style="font: inherit;">2023</em> and the impact was <em style="font: inherit;">not</em> material to the Company&#8217;s financial position, results of operations, or cash flows.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"><i>Recent Accounting Standards</i></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> March 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;01</em> &#8220;Leases (Topic&#160;<em style="font: inherit;">842</em>): Common Control Arrangements&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;01&#8221;</em>) which requires leasehold improvements associated with common control leases be (<em style="font: inherit;">1</em>)&#160;amortized by the lessee over the useful life of the leasehold improvements to the common control group as long as the lessee controls the use of the underlying asset through a lease and (<em style="font: inherit;">2</em>)&#160;accounted for as a transfer between entities under common control through an adjustment to equity if, and when, the lessee <em style="font: inherit;">no</em> longer controls the use of the underlying asset. ASU&#160;<em style="font: inherit;">2023&#8209;01</em> is effective for the Company beginning <em style="font: inherit;"> January&#160;</em><em style="font: inherit;">1,</em> <em style="font: inherit;">2024,</em> including interim periods in <em style="font: inherit;">2024,</em> with early adoption permitted. The Company does <em style="font: inherit;">not</em> expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> October 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;06,</em> &#8220;Disclosure Improvements: Codification Amendments in Response to the SEC&#8217;s Disclosure Update and Simplification Initiative&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;06&#8221;</em>) which incorporates certain SEC disclosure requirements into the Accounting Standards Codification. The effective date for each amendment in ASU&#160;<em style="font: inherit;">2023&#8209;06</em> will be the effective date of the removal of the disclosure requirement from Regulation&#160;S&#8209;X or Regulation&#160;S&#8209;K, with early adoption prohibited. The amendments should be applied prospectively. The Company does <em style="font: inherit;">not</em> expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> November 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;07,</em> &#8220;Segment Reporting (Topic&#160;<em style="font: inherit;">280</em>): Improvements to Reportable Segment Disclosures&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;07&#8221;</em>) which requires disclosure of incremental segment information, primarily through enhanced disclosures about significant segment expenses, on an annual and interim basis for all public entities. ASU&#160;<em style="font: inherit;">2023&#8209;07</em> will be applied retrospectively, and will be effective for the Company&#8217;s <em style="font: inherit;">2024</em> annual reporting, and for interim periods beginning in <em style="font: inherit;">2025,</em> with early adoption permitted. The Company does <em style="font: inherit;">not</em> expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">&#160;</p>
   <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;">In <em style="font: inherit;"> December 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em>&#160;<em style="font: inherit;">2023&#8209;09,</em> &#8220;Income Taxes (Topic&#160;<em style="font: inherit;">740</em>): Improvements to Income Tax Disclosures&#8221; (&#8220;ASU&#160;<em style="font: inherit;">2023&#8209;09&#8221;</em>) which improves the transparency, effectiveness, and comparability of income tax disclosures and allows investors to better assess, in their capital allocation decisions, how an entity&#8217;s worldwide operations and related tax risks and tax planning and operation opportunities affect its income tax rate and prospects for future cash flows. ASU&#160;<em style="font: inherit;">2023&#8209;09</em> will be applied prospectively, and will be effective for the Company&#8217;s <em style="font: inherit;">2025</em> annual reporting, with early adoption permitted. The Company is currently assessing the impact of ASU&#160;<em style="font: inherit;">2023&#8209;09</em> on its disclosures in the notes to the consolidated financial statements.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_AccruedLiabilitiesPolicyTextBlock">
<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>Represents information about accrued liabilities Policy.</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;">nwpx_AccruedLiabilitiesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock">
<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>Disclosure of accounting policy for contract assets and liabilities.</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;">nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_nwpx_WorkersCompensationInsurancePolicyTextBlock">
<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>Disclosure of accounting policy for workers compensation insurance and calculation of liability balance.</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;">nwpx_WorkersCompensationInsurancePolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_AccountingPoliciesAbstract">
<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 );">- References</a><div><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;">us-gaap_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_BusinessCombinationsPolicy">
<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>Disclosure of accounting policy for completed business combinations (purchase method, acquisition method or combination of entities under common control). This accounting policy may include a general discussion of the purchase method or acquisition method of accounting (including for example, the treatment accorded contingent consideration, the identification of assets and liabilities, the purchase price allocation process, how the fair values of acquired assets and liabilities are determined) and the entity's specific application thereof. An entity that acquires another entity in a leveraged buyout transaction generally discloses the accounting policy followed by the acquiring entity in determining the basis used to value its interest in the acquired entity, and the rationale for that accounting policy.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 05<br> -Paragraph 4<br> -Subparagraph (a)-(d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479515/805-10-05-4<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;">us-gaap_BusinessCombinationsPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_CashAndCashEquivalentsPolicyTextBlock">
<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>Disclosure of accounting policy for cash and cash equivalents, including the policy for determining which items are treated as cash equivalents. Other information that may be disclosed includes (1) the nature of any restrictions on the entity's use of its cash and cash equivalents, (2) whether the entity's cash and cash equivalents are insured or expose the entity to credit risk, (3) the classification of any negative balance accounts (overdrafts), and (4) the carrying basis of cash equivalents (for example, at cost) and whether the carrying amount of cash equivalents approximates fair value.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482913/230-10-50-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;">us-gaap_CashAndCashEquivalentsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock">
<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>Disclosure of accounting policy for comprehensive income.</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;">us-gaap_ComprehensiveIncomePolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ConcentrationRiskCreditRisk">
<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>Disclosure of accounting policy for credit risk.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 825<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480981/942-825-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -SubTopic 10<br> -Topic 275<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482861/275-10-50-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;">us-gaap_ConcentrationRiskCreditRisk</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ConsolidationPolicyTextBlock">
<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>Disclosure of accounting policy regarding (1) the principles it follows in consolidating or combining the separate financial statements, including the principles followed in determining the inclusion or exclusion of subsidiaries or other entities in the consolidated or combined financial statements and (2) its treatment of interests (for example, common stock, a partnership interest or other means of exerting influence) in other entities, for example consolidation or use of the equity or cost methods of accounting. The accounting policy may also address the accounting treatment for intercompany accounts and transactions, noncontrolling interest, and the income statement treatment in consolidation for issuances of stock by a subsidiary.</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/exampleRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483426/235-10-50-4<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-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;">us-gaap_ConsolidationPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DerivativesPolicyTextBlock">
<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>Disclosure of accounting policy for its derivative instruments and hedging activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 815<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(n))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-1A<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-1<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-4<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-7<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;">us-gaap_DerivativesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_EarningsPerSharePolicyTextBlock">
<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>Disclosure of accounting policy for computing basic and diluted earnings or loss per share for each class of common stock and participating security. Addresses all significant policy factors, including any antidilutive items that have been excluded from the computation and takes into account stock dividends, splits and reverse splits that occur after the balance sheet date of the latest reporting period but before the issuance of the financial statements.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-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;">us-gaap_EarningsPerSharePolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock">
<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>Disclosure of accounting policy for (1) transactions denominated in a currency other than the reporting enterprise's functional currency, (2) translating foreign currency financial statements that are incorporated into the financial statements of the reporting enterprise by consolidation, combination, or the equity method of accounting, and (3) remeasurement of the financial statements of a foreign reporting enterprise in a hyperinflationary economy.</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/disclosureRef<br> -Topic 830<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//830/tableOfContent<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;">us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy">
<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>Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined.</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/exampleRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482548/350-20-55-24<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482573/350-20-50-2<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//350-20/tableOfContent<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;">us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy">
<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>Disclosure of accounting policy for intangible assets. This accounting policy may address both intangible assets subject to amortization and those that are not. The following also may be disclosed: (1) a description of intangible assets (2) the estimated useful lives of those assets (3) the amortization method used (4) how the entity assesses and measures impairment of such assets (5) how future cash flows are estimated (6) how the fair values of such asset are determined.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 30<br> -Topic 350<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_IncomeTaxPolicyTextBlock">
<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>Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements.</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/disclosureRef<br> -Topic 946<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-03(h)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479886/946-10-S99-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 17<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-17<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-9<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482525/740-10-45-25<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482525/740-10-45-28<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 19<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-19<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482765/220-10-50-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 20<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-20<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;">us-gaap_IncomeTaxPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_InventoryPolicyTextBlock">
<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>Disclosure of inventory accounting policy for inventory classes, including, but not limited to, basis for determining inventory amounts, methods by which amounts are added and removed from inventory classes, loss recognition on impairment of inventories, and situations in which inventories are stated above cost.</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/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483489/210-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483426/235-10-50-4<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 912<br> -SubTopic 330<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482105/912-330-50-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 330<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//330/tableOfContent<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 330<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483080/330-10-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 330<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483080/330-10-50-4<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 6<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 270<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482989/270-10-45-6<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;">us-gaap_InventoryPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_LesseeLeasesPolicyTextBlock">
<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>Disclosure of accounting policy for leasing arrangement entered into by lessee.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-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;">us-gaap_LesseeLeasesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock">
<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>Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.</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;">us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_PensionAndOtherPostretirementPlansPolicy">
<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>Disclosure of accounting policy for pension and other postretirement benefit plans. This accounting policy may address (1) the types of plans sponsored by the entity, and the benefits provided by each plan (2) groups that participate in (or are covered by) each plan (3) how plan assets, liabilities and expenses are measured, including the use of any actuaries and (4) significant assumptions used by the entity to value plan assets and liabilities and how such assumptions are derived.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 70<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480794/715-70-50-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 30<br> -Topic 715<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481097/715-30-50-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 60<br> -Topic 715<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480266/715-60-50-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 80<br> -Topic 715<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480576/715-80-50-2<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 20<br> -Topic 715<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-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;">us-gaap_PensionAndOtherPostretirementPlansPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock">
<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>Disclosure of accounting policy for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 10<br> -Topic 360<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482099/360-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -SubTopic 360<br> -Topic 958<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480321/958-360-50-6<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -SubTopic 360<br> -Topic 958<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480321/958-360-50-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;">us-gaap_PropertyPlantAndEquipmentPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ReceivablesPolicyTextBlock">
<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>Disclosure of accounting policy for receivable. Includes, but is not limited to, accounts receivable and financing receivable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 310<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481569/310-20-50-4<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 310<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481569/310-20-50-1<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481962/310-10-50-2<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 310<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481569/310-20-50-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;">us-gaap_ReceivablesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_RevenueRecognitionPolicyTextBlock">
<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>Disclosure of accounting policy for revenue. Includes revenue from contract with customer and from other sources.</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/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483426/235-10-50-4<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (e)<br> -SubTopic 10<br> -Topic 235<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483426/235-10-50-4<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;">us-gaap_RevenueRecognitionPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy">
<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>Disclosure of accounting policy for award under share-based payment arrangement. Includes, but is not limited to, methodology and assumption used in measuring cost.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(v)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.C.Q3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479830/718-10-S99-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.D.1.Q5)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479830/718-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.D.3.Q2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479830/718-10-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.D.2.Q6)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479830/718-10-S99-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org//718/tableOfContent<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_StockholdersEquityPolicyTextBlock">
<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>Disclosure of accounting policy for its capital stock transactions, including dividends and accumulated other comprehensive income.</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/disclosureRef<br> -Topic 946<br> -SubTopic 235<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481062/946-235-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-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;">us-gaap_StockholdersEquityPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_UseOfEstimates">
<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>Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482861/275-10-50-9<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482861/275-10-50-4<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -SubTopic 10<br> -Topic 275<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482861/275-10-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -SubTopic 10<br> -Topic 275<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482861/275-10-50-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -SubTopic 10<br> -Topic 275<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482861/275-10-50-11<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -SubTopic 10<br> -Topic 275<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482861/275-10-50-12<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482861/275-10-50-8<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;">us-gaap_UseOfEstimates</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>46
<FILENAME>R32.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966666736">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Summary of Significant Accounting Policies (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock', window );">Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">21,072</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,149</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">11,523</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Basic weighted-average common shares outstanding</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,991</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,914</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,854</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Effect of potentially dilutive common shares (1)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">90</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">98</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">74</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Diluted weighted-average common shares outstanding</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,081</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,012</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9,928</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Net income per common share</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Basic</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.11</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3.14</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.17</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Diluted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.09</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3.11</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.16</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock">
<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>Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-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;">us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>47
<FILENAME>R33.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966901168">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Business Combinations (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock', window );">Schedule of Business Acquisitions, by Acquisition [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Assets</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">278</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Trade and other receivables</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">11,034</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Inventories</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,773</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Prepaid expenses and other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">293</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Property and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,076</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating lease right-of-use assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">58,301</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">31,000</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Deferred income taxes</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">347</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total assets acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">122,102</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Liabilities</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Accounts payable</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,029</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Accrued liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,067</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">58,301</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total liabilities assumed</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">64,397</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">32,519</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Total purchase consideration</b></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">90,224</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <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_us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock', window );">Schedule of Acquired Finite-Lived Intangible Assets by Major Class [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="vertical-align: bottom;"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Estimated Useful Life</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Fair Value</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom;"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(In years) </b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>(In thousands) </b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Customer relationships</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">10.0</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">19,800</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Trade names and trademarks</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">10.0</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,600</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Patents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">21.0</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,300</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Backlog</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">0.6</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">300</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">10.4</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,000</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <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_us-gaap_BusinessAcquisitionProFormaInformationTextBlock', window );">Business Acquisition, Pro Forma Information [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding-bottom: 1px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Year Ended December 31, 2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 84%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Net sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">384,872</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Net income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">15,780</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionProFormaInformationTextBlock">
<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>Tabular disclosure of pro forma results of operations for a material business acquisition or series of individually immaterial business acquisitions that are material in the aggregate.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -SubTopic 10<br> -Topic 805<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479328/805-10-50-2<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(3)<br> -SubTopic 10<br> -Topic 805<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479328/805-10-50-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;">us-gaap_BusinessAcquisitionProFormaInformationTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock">
<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>Tabular disclosure of the characteristics, including initial carrying value, residual amount, weighted average useful life, of finite-lived intangible assets acquired during the period by major class. A major class is composed of intangible assets that can be grouped together because they are similar, either by nature or by their use in the operations of the company.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock">
<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>Tabular disclosure of a material business combination completed during the period, including background, timing, and recognized assets and liabilities. This table does not include leveraged buyouts.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479328/805-10-50-3<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479328/805-10-50-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;">us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>48
<FILENAME>R34.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920969205824">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Inventories (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock', window );">Schedule Of Inventory Current And Non Current [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Raw materials</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">68,110</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">47,978</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Work-in-process</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,912</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5,114</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Finished goods</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">11,911</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">15,773</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Supplies</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,296</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,164</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total inventories</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">91,229</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">71,029</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock">
<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>Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process. Includes current and non-current inventory balances.</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;">nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>49
<FILENAME>R35.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966706736">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Property and Equipment (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_PropertyPlantAndEquipmentTextBlock', window );">Property, Plant and Equipment [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgb(255, 255, 255);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Land and improvements</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">25,064</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">23,981</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Buildings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">54,036</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">51,389</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Leasehold improvements</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,182</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,182</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Machinery and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">155,278</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">149,971</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Equipment under finance lease</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">8,519</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,849</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">246,079</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">232,372</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Less accumulated depreciation and amortization</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(126,359</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(117,856</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">119,720</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">114,516</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Construction in progress</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">24,235</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">18,650</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Property and equipment, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">143,955</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">133,166</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentTextBlock">
<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>Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 10<br> -Topic 360<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482099/360-10-50-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;">us-gaap_PropertyPlantAndEquipmentTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>50
<FILENAME>R36.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968304432">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Goodwill and Intangible Assets (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock', window );">Schedule of Finite-Lived Intangible Assets [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Gross Carrying</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Accumulated</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Intangible</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Amount</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Amortization</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Assets, Net</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2023</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Customer relationships</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">27,831</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(7,315</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">20,516</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Trade names and trademarks</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,825</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(3,734</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,091</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Patents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,627</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(160</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,467</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">42,283</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(11,209</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,074</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2022</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Customer relationships</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">29,209</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(5,845</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">23,364</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Trade names and trademarks</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,825</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(2,490</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">10,335</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Patents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,627</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(81</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,546</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">329</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(310</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">19</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">43,990</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,726</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">35,264</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <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_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock', window );">Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>Year ending December 31,</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,033</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2025</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,033</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2026</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,033</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2027</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,033</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2028</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,033</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Thereafter</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">10,909</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total amortization expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,074</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock">
<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>Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance with a finite life, by either major class or business segment.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock">
<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>Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>51
<FILENAME>R37.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920961011040">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Leases (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock', window );">Lessee, Lease, Assets and Liabilities [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Right-of-use assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases, net, included in Property and equipment (1)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">7,092</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,618</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">88,155</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">93,124</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total right-of-use assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">95,247</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">95,742</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Lease liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">7,481</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,037</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">90,216</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">94,174</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">97,697</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">97,211</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <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_us-gaap_LeaseCostTableTextBlock', window );">Lease, Cost [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Finance lease cost:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Amortization of right-of-use assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">795</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">577</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">413</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Interest on lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">266</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">148</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">90</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Operating lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">7,765</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">7,770</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,627</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Short-term lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,402</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,000</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">993</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Variable lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">313</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">251</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">158</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total lease cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,541</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9,746</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">6,281</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_LesseeLiabilityMaturityTableTextBlock', window );">Lessee, Liability, Maturity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Finance Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Operating Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,212</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,874</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2025</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,923</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,913</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2026</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,847</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,583</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2027</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,614</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,192</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">2028</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,147</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,308</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Thereafter</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">76,453</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total lease payments</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,743</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">109,323</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Amount representing interest</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,262</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(19,107</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Present value of lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">7,481</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">90,216</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Current portion of lease liabilities (1)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,721</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(4,933</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Long-term lease liabilities (2)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">5,760</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">85,283</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock', window );">Lease Terms and Discount Rates for Lease Liabilities [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Weighted-average remaining lease term (years)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3.90</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3.52</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">16.73</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">17.83</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Weighted-average discount rate</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6.93</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5.44</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2.17</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2.19</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock', window );">Other Information Related to Operating and Finance Leases [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Cash paid for amounts included in the measurement of lease liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating cash flows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(266</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(148</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(90</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Operating cash flows from operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(6,930</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(6,818</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(4,142</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financing cash flows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(826</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(597</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(415</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Right-of-use assets obtained in exchange for finance lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5,270</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,466</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">853</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Right-of-use assets obtained in exchange for operating lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">952</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">568</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">16,043</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock">
<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>Tabular disclosure of lessee's lease terms and discount rates for lease liabilities.</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;">nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock">
<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 tabular disclosure for assets and liabilities of leases of the lessee.</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;">nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_nwpx_LesseeLiabilityMaturityTableTextBlock">
<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>Tabular disclosure of undiscounted cash flows of lessee's operating and finace lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating and finance lease liability recognized in statement of financial position.</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;">nwpx_LesseeLiabilityMaturityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock">
<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>Tabular disclosure of other information related to operating and finance leases.</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;">nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_LeaseCostTableTextBlock">
<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>Tabular disclosure of lessee's lease cost. Includes, but is not limited to, interest expense for finance lease, amortization of right-of-use asset for finance lease, operating lease cost, short-term lease cost, variable lease cost and sublease income.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_LeaseCostTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>52
<FILENAME>R38.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966641648">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 10 - Fair Value Measurements (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock', window );">Schedule of Fair Value, Assets and Liabilities Measured on Recurring Basis [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Level 1</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Level 2</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Level 3</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2023</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Deferred compensation plan</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,912</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,391</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">521</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">42</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">42</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Interest rate swaps</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">326</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">326</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt; text-indent: -9pt;">Total financial assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,280</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,391</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">889</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(115</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(115</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"><b>As of December 31, 2022</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Deferred compensation plan</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,587</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,090</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">497</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">728</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">728</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Interest rate swaps</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">862</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">862</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt; text-indent: -9pt;">Total financial assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">5,177</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,090</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2,087</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Financial liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Foreign currency forward contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(80</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(80</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock">
<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>Tabular disclosure of assets and liabilities, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, that are measured at fair value on a recurring basis. The disclosures contemplated herein include the fair value measurements at the reporting date by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets (Level 1), significant other observable inputs (Level 2), and significant unobservable inputs (Level 3).</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/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482106/820-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482106/820-10-50-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;">us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>53
<FILENAME>R39.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966589968">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Derivative Instruments and Hedging Activities (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock', window );">Derivative Instruments, Gain (Loss) [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Foreign currency forward contracts:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Net sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(708</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">660</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Property and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(109</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(680</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Interest rate swaps:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Interest expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">719</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">39</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(98</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">19</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock">
<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>Tabular disclosure of the location and amount of derivative instruments and nonderivative instruments designated as hedging instruments reported before netting adjustments, and the amount of gain (loss) on derivative instruments and nonderivative instruments designated and qualified as hedging instruments.</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/disclosureRef<br> -Topic 815<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4E<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-4E<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4C<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-4C<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4A<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-4A<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;">us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>54
<FILENAME>R40.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960588304">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Share-based Compensation (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock', window );">Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Cost of sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,027</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,320</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,003</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Selling, general, and administrative expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,645</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,382</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,213</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,672</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,702</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,216</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock', window );">Schedule of Unvested Restricted Stock Units and Performance Share Awards Activity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Number of RSUs and PSAs (1)</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted- Average Grant Date Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unvested RSUs and PSAs as of December 31, 2022</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">200,924</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">30.80</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">RSUs and PSAs granted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">134,498</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">28.41</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Unvested RSUs and PSAs canceled</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(13,589</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">30.82</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">RSUs and PSAs vested (2)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(95,442</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">30.12</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unvested RSUs and PSAs as of December 31, 2023</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">226,391</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">29.66</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock">
<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>Tabular disclosure of the change in restricted stock units (RSUs) and performance share awards (PSAs).</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;">nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock">
<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>Tabular disclosure of allocation of amount expensed and capitalized for award under share-based payment arrangement to statement of income or comprehensive income and statement of financial position. Includes, but is not limited to, corresponding line item in financial statement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>55
<FILENAME>R41.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966697728">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Revenue (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock', window );">Revenue from External Customers by Geographic Areas [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Net sales by geographic region:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">United States</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">420,925</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">423,961</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">313,729</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Canada</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">23,430</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">33,704</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">19,584</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">444,355</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">457,665</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">333,313</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <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_us-gaap_DisaggregationOfRevenueTableTextBlock', window );">Disaggregation of Revenue [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Over time</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">296,381</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">307,572</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">259,823</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Point in time</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">147,974</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">150,093</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">73,490</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Net sales</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">444,355</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">457,665</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">333,313</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <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_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock', window );">Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, beginning of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">121,778</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">107,170</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Revenue recognized in advance of billings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">291,812</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">306,095</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Billings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(293,356</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(294,506</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">282</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,019</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, end of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">120,516</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">121,778</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, beginning of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">17,456</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,623</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Billings</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">20,815</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">17,618</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%; padding: 0; margin: 0"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Revenue recognized</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(16,984</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(2,663</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">163</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(122</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Balance, end of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">21,450</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,456</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock">
<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>Tabular disclosure of receivable, contract asset, and contract liability from contract with customer. Includes, but is not limited to, change in contract asset and contract liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-10<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;">us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisaggregationOfRevenueTableTextBlock">
<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>Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-5<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;">us-gaap_DisaggregationOfRevenueTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock">
<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>Tabular disclosure of revenue from external customers by geographic areas attributed to the entity's country of domicile and to foreign countries from which the entity derives revenue.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 41<br> -Subparagraph a<br> -SubTopic 10<br> -Topic 280<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-41<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;">us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>56
<FILENAME>R42.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960825296">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Income Taxes (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock', window );">Schedule of Income before Income Tax, Domestic and Foreign [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">United States</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">27,814</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">40,271</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">14,000</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Foreign</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,465</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,079</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,158</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">29,279</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">41,350</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">15,158</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <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_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock', window );">Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Current:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Federal</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">6,817</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,443</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,256</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">State</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">1,519</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,264</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,064</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Foreign</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">289</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">198</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">213</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total current income tax expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">8,625</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9,905</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,533</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Deferred:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Federal</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(612</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(22</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">573</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">State</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">195</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">340</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(464</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Foreign</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(1</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(22</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(7</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total deferred income tax expense (benefit)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(418</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">296</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">102</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;">Total income tax expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">8,207</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,201</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,635</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <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_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock', window );">Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Income tax expense at federal statutory rate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">6,148</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,683</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,183</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">State expense, net of federal income tax effect</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">942</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,463</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">547</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Change in valuation allowance</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(30</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(1</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(247</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Nondeductible expenses</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">257</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(35</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(31</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Foreign rate differential</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">133</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">97</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">104</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Accrued interest on uncertain income tax positions</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; background-color: rgba(0, 0, 0, 0); padding: 0; margin: 0">264</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">106</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">16</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">State franchise tax</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; background-color: rgba(0, 0, 0, 0); padding: 0; margin: 0">250</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">110</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">92</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">243</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(222</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(29</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Income tax expense</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">8,207</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,201</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,635</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Effective income tax rate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">28.0</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">24.7</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">24.0</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">%</p> </td></tr>
</tbody></table>
   <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_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock', window );">Schedule of Deferred Tax Assets and Liabilities [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Deferred income tax assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Accrued employee benefits</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">3,096</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">3,840</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Inventories</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">380</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">350</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Trade receivable, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">532</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">329</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Net operating loss carryforwards</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">3,429</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,944</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Tax credit carryforwards</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">2,777</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">2,863</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Contract assets, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">934</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">403</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Other</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">1,952</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,074</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">13,100</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">11,803</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Valuation allowance</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(6,641</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(6,051</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">6,459</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,752</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Deferred income tax liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Property and equipment</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(13,850</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(13,550</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(800</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(1,319</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">(1,164</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(606</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Prepaid expenses</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(1,217</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,285</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(17,031</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(16,760</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Net deferred income tax liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(10,572</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(11,008</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Amounts are presented in the Consolidated Balance Sheets as follows:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Deferred income tax assets, included in Other assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">370</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">394</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Deferred income taxes</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(10,942</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(11,402</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Net deferred income tax liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">(10,572</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(11,008</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td></tr>
</tbody></table>
   <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_us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock', window );">Schedule of Unrecognized Tax Benefits Roll Forward [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%; background-color: rgba(0, 0, 0, 0);">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Unrecognized income tax benefits, beginning of year</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);">4,472</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,366</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4,350</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Increases for positions taken in prior years</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">264</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">106</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">16</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Unrecognized income tax benefits, end of year</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);">4,736</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,472</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,366</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock">
<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>Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Paragraph 9<br> -Section 50<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-9<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;">us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock">
<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>Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Paragraph 2<br> -Section 50<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock">
<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>Tabular disclosure of the reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax income from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Paragraph 12<br> -Section 50<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock">
<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>Tabular disclosure of income before income tax between domestic and foreign jurisdictions.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-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;">us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock">
<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>Tabular disclosure of the change in unrecognized tax benefits.</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/exampleRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 217<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482663/740-10-55-217<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 15A<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-15A<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;">us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>57
<FILENAME>R43.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920967799600">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Accumulated Other Comprehensive Loss (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock', window );">Schedule of Accumulated Other Comprehensive Income (Loss) [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Pension liability adjustment, net of income tax benefit of $<span style="-sec-ix-hidden:c107876544">482 </span>and $<span style="-sec-ix-hidden:c107876545">592</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(1,193</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">(1,532</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain (loss) on foreign currency forward contracts designated as cash flow hedges, net of income tax (expense) benefit of $<span style="-sec-ix-hidden:c107876546">12 </span>and $(<span style="-sec-ix-hidden:c107876547">33</span>)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(13</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">94</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain on interest rate swaps designated as cash flow hedges, net of income tax expense of $<span style="-sec-ix-hidden:c107876548">79 </span>and $<span style="-sec-ix-hidden:c107876549">213</span></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">246</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">649</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 68%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(960</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(789</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock', window );">Schedule of Changes in Accumulated Other Comprehensive Income Loss [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Pension Liability Adjustment</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Unrealized Gain (Loss) on Foreign Currency Forward Contracts Designated as Cash Flow Hedges</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Unrealized Gain on Interest Rate Swaps Designated as Cash Flow Hedges</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Balances, December 31, 2021</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,487</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(195</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,682</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Other comprehensive income (loss) before reclassifications</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">41</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(100</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">678</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">619</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 36%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Amounts reclassified from Accumulated other comprehensive loss</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(86</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">389</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(29</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">274</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 36%;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Net current period adjustments to Other comprehensive income</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(45</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">289</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">649</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">893</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Balances, December 31, 2022</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(1,532</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">94</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">649</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(789</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding: 0; margin: 0"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Other comprehensive income (loss) before reclassifications</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">338</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(115</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">142</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">365</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Amounts reclassified from Accumulated other comprehensive loss</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">1</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">8</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(545</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(536</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: -9pt;">Net current period adjustments to Other comprehensive loss</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">339</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(107</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(403</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(171</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td><td style="width: 13%; padding: 0; margin: 0">&#160;</td><td style="width: 1%; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Balances, December 31, 2023</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(1,193</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(13</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">246</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(960</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td></tr>
</tbody></table>
   <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_us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock', window );">Reclassification out of Accumulated Other Comprehensive Income [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Amount reclassified from Accumulated Other Comprehensive Loss</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Affected line item in the Consolidated</em></b></p> </td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"><b>Details about Accumulated Other</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Statements</em></b></p> </td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"><b>Comprehensive Loss Components</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">of Operations</em></b></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 34%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Pension liability adjustment:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Net periodic pension cost:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Service cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(13</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(13</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(7</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Cost of sales</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Non-service cost</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">11</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">127</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">110</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Other income</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Associated income tax (expense) benefit</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(28</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(25</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Income tax expense</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">86</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">78</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain (loss) on foreign currency forward contracts:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Gain (loss) on cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">99</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">163</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(72</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Net sales</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Loss on cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(109</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(680</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Property and equipment</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Associated income tax benefit</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">128</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">18</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Income tax expense</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(8</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(389</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(54</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Unrealized gain on interest rate swaps:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Gain on cash flow hedges</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">719</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">39</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><em style="font: inherit;">Interest expense</em></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Associated income tax expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(174</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(10</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"><em style="font: inherit;">Income tax expense</em></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 34%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">545</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">29</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 34%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 18%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"> <p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;">Total reclassifications for the period</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">536</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(274</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">24</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"><em style="font: inherit;">&#160;</em></td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock">
<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>Represents schedule of changes in accumulated other comprehensive income loss.</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;">nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock">
<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>Tabular disclosure of information about items reclassified out of accumulated other comprehensive income (loss).</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;">us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock">
<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>Tabular disclosure of the components of accumulated other comprehensive income (loss).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-14A<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 830<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481674/830-30-50-1<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 830<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 20<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481694/830-30-45-20<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;">us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>58
<FILENAME>R44.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966716496">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 19 - Segment Information (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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_us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock', window );">Schedule of Segment Reporting Information, by Segment [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Net sales:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">296,381</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">307,572</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">259,823</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">147,974</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">150,093</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">73,490</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">444,355</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">457,665</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">333,313</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Gross profit:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">42,427</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">44,473</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">31,281</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">35,215</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">41,382</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,973</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">77,642</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">85,855</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">44,254</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Depreciation and amortization expense:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,000</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,789</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,524</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,241</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,807</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,738</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">15,241</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">16,596</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">13,262</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Corporate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">565</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">507</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">362</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">15,806</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,103</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">13,624</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 52%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt;">Capital expenditures:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">11,154</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">8,211</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">7,538</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">6,503</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">13,925</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">5,255</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">17,657</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">22,136</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,793</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"> <p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;;">Corporate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">634</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">693</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">469</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">18,291</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">22,829</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">13,262</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2022</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Total assets:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Engineered Steel Pressure Pipe</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">307,856</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">307,924</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Precast Infrastructure and Engineered Systems</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">255,904</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">256,520</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">563,760</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">564,444</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Corporate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">34,121</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">36,896</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Total</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">597,881</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">601,340</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock">
<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>Tabular disclosure of the profit or loss and total assets for each reportable segment. An entity discloses certain information on each reportable segment if the amounts (a) are included in the measure of segment profit or loss reviewed by the chief operating decision maker or (b) are otherwise regularly provided to the chief operating decision maker, even if not included in that measure of segment profit or loss.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482573/350-20-50-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 25<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-25<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<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;">us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>59
<FILENAME>R45.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966589968">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Schedule II - Valuation and Qualifying Accounts (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock', window );">Summary of Valuation and Qualifying Accounts [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Balance at Beginning of Period</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Charged to Profit and Loss</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Deduction from Reserves</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Balance at End of Period</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Year Ended December 31, 2023:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Allowance for doubtful accounts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">369</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">189</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(437</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">121</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Valuation allowance for deferred income tax assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,051</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">696</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(106</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,641</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Year Ended December 31, 2022:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Allowance for doubtful accounts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">503</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">442</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(576</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">369</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Valuation allowance for deferred income tax assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5,899</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">254</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(102</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,051</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 36%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 13%;">&#160;</td><td style="width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Year Ended December 31, 2021:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 13%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Allowance for doubtful accounts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">767</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">653</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(917</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">503</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 36%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Valuation allowance for deferred income tax assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">6,228</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(329</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5,899</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock">
<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 schedule of allowance and reserve accounts including their beginning and ending balances, as well as a reconciliation by type of activity during the period. Alternatively, disclosure of the required information may be within the footnotes to the financial statements or a supplemental schedule to the financial statements.</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;">nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<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 );">- References</a><div><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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>60
<FILENAME>R46.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920965406928">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 1 - Organization (Details Textual)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2023</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_us-gaap_NumberOfOperatingSegments', window );">Number of Operating Segments</a></td>
<td class="nump">2<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_NumberOfManufacturingFacilities', window );">Number of Manufacturing Facilities</a></td>
<td class="nump">13<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_NumberOfManufacturingFacilities">
<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>Represents number of manufacturing facilities.</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;">nwpx_NumberOfManufacturingFacilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</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_us-gaap_NumberOfOperatingSegments">
<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>Number of operating segments. An operating segment is a component of an enterprise: (a) that engages in business activities from which it may earn revenues and incur expenses (including revenues and expenses relating to transactions with other components of the same enterprise), (b) whose operating results are regularly reviewed by the enterprise's chief operating decision maker to make decisions about resources to be allocated to the segment and assess its performance, and (c) for which discrete financial information is available. An operating segment may engage in business activities for which it has yet to earn revenues, for example, start-up operations may be operating segments before earning revenues.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 18<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-18<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;">us-gaap_NumberOfOperatingSegments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</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>61
<FILENAME>R47.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960723712">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Summary of Significant Accounting Policies (Details Textual)<br> shares in Thousands, $ in Millions</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Dec. 31, 2023 </div>
<div>USD ($) </div>
<div>shares</div>
</th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($) </div>
<div>shares</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($) </div>
<div>shares</div>
</th>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_BookOverdrafts', window );">Book Overdrafts</a></td>
<td class="nump">$ 1.8<span></span>
</td>
<td class="nump">$ 0.6<span></span>
</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_us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent', window );">Workers' Compensation Liability</a></td>
<td class="nump">2.2<span></span>
</td>
<td class="nump">1.6<span></span>
</td>
<td class="text">&#160;<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_us-gaap_AccruedBonusesCurrent', window );">Accrued Bonuses, Current</a></td>
<td class="nump">5.2<span></span>
</td>
<td class="nump">8.0<span></span>
</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_us-gaap_SalesAndExciseTaxPayableCurrent', window );">Sales and Excise Tax Payable, Current</a></td>
<td class="nump">5.3<span></span>
</td>
<td class="nump">4.4<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ForeignCurrencyTransactionGainLossRealized', window );">Realized Gain (Loss), Foreign Currency Transaction, before Tax</a></td>
<td class="nump">$ 0.4<span></span>
</td>
<td class="nump">$ 0.5<span></span>
</td>
<td class="num">$ (0.5)<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_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount', window );">Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount (in shares) | shares</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables', window );">Number of Customers with Receivable Balance in Excess of Ten Percent of Receivables</a></td>
<td class="nump">1<span></span>
</td>
<td class="nump">1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilityMember', window );">Accrued Liability [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_WorkersCompensationLiabilityCurrent', window );">Workers' Compensation Liability, Current</a></td>
<td class="nump">$ 1.3<span></span>
</td>
<td class="nump">$ 0.5<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=nwpx_OtherLongtermLiabilitiesMember', window );">Other Long-term Liabilities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_WorkersCompensationLiabilityNoncurrent', window );">Workers' Compensation Liability, Noncurrent</a></td>
<td class="nump">$ 0.9<span></span>
</td>
<td class="nump">$ 1.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life (Year)</a></td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life (Year)</a></td>
<td class="text">21 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandImprovementsMember', window );">Land Improvements [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">15 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandImprovementsMember', window );">Land Improvements [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">30 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember', window );">Building [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">20 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember', window );">Building [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">40 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember', window );">Leasehold Improvements [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember', window );">Leasehold Improvements [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">30 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_MachineryAndEquipmentMember', window );">Machinery and Equipment [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_MachineryAndEquipmentMember', window );">Machinery and Equipment [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">30 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_BookOverdrafts">
<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>Outstanding checks in excess of funds on deposit that are shown in account payable.</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;">nwpx_BookOverdrafts</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables">
<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>Number of customers with balances in excess of 10% of total accounts receivable.</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;">nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</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_us-gaap_AccruedBonusesCurrent">
<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>Carrying value as of the balance sheet date of obligations incurred and payable for incentive compensation awarded to employees and directors or earned by them based on the terms of one or more relevant arrangements. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_AccruedBonusesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount">
<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>Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented.</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/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-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;">us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_FiniteLivedIntangibleAssetUsefulLife">
<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>Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</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;">us-gaap_FiniteLivedIntangibleAssetUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ForeignCurrencyTransactionGainLossRealized">
<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>Amount, before tax, of realized gain (loss) from foreign currency transaction.</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/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 6<br> -Subparagraph (a)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483581/946-220-45-6<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(7)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 830<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481956/830-20-45-1<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 830<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481926/830-20-50-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;">us-gaap_ForeignCurrencyTransactionGainLossRealized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PropertyPlantAndEquipmentUsefulLife">
<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>Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.</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;">us-gaap_PropertyPlantAndEquipmentUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SalesAndExciseTaxPayableCurrent">
<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>Carrying value as of the balance sheet date of liabilities incurred through that date and payable for statutory sales and use taxes, including value added tax. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_SalesAndExciseTaxPayableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WorkersCompensationLiabilityCurrent">
<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>Carrying value as of the balance sheet date of obligations and payables pertaining to claims incurred of a workers compensation nature. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_WorkersCompensationLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent">
<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>Carrying value as of the balance sheet date of obligations and payables pertaining to claims incurred of a workers compensation nature.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(24))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-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;">us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WorkersCompensationLiabilityNoncurrent">
<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>Carrying value as of the balance sheet date of obligations and payables pertaining to claims incurred of a workers compensation nature. Used to reflect the noncurrent portion of the liabilities (due beyond one year; or beyond one operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.24)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_WorkersCompensationLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilityMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilityMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=nwpx_OtherLongtermLiabilitiesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=nwpx_OtherLongtermLiabilitiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandImprovementsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandImprovementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_MachineryAndEquipmentMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_MachineryAndEquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>62
<FILENAME>R48.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920958542912">
<tr>
<th class="tl" colspan="2" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Summary of Significant Accounting Policies - Loss Per Basic and Diluted Weighted Average Common Share Outstanding for Continuing and Discontinued Operations (Details) - USD ($)<br> $ / shares in Units, shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 21,072<span></span>
</td>
<td class="nump">$ 31,149<span></span>
</td>
<td class="nump">$ 11,523<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_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">9,991<span></span>
</td>
<td class="nump">9,914<span></span>
</td>
<td class="nump">9,854<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_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment', window );">Effect of potentially dilutive common shares (1) (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="nump">90<span></span>
</td>
<td class="nump">98<span></span>
</td>
<td class="nump">74<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Diluted weighted-average common shares outstanding (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">10,081<span></span>
</td>
<td class="nump">10,012<span></span>
</td>
<td class="nump">9,928<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_us-gaap_EarningsPerShareAbstract', window );"><strong>Net income per common share</strong></a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_EarningsPerShareBasic', window );">Basic (in dollars per share)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 2.11<span></span>
</td>
<td class="nump">$ 3.14<span></span>
</td>
<td class="nump">$ 1.17<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_us-gaap_EarningsPerShareDiluted', window );">Diluted (in dollars per share)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 2.09<span></span>
</td>
<td class="nump">$ 3.11<span></span>
</td>
<td class="nump">$ 1.16<span></span>
</td>
</tr>
<tr><td colspan="4"></td></tr>
<tr><td colspan="4"><table class="outerFootnotes" width="100%"><tr class="outerFootnote">
<td style="vertical-align: top; width: 12pt;" valign="top">[1]</td>
<td style="vertical-align: top;" valign="top">There were no antidilutive shares for the years ended December 31, 2023, 2022, or 2021.</td>
</tr></table></td></tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareAbstract">
<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 );">- References</a><div><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;">us-gaap_EarningsPerShareAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_EarningsPerShareBasic">
<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 amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</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/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482635/260-10-55-15<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-7<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-2<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-10<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-1<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 52<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482635/260-10-55-52<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-7<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;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_EarningsPerShareDiluted">
<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 amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.</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/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482635/260-10-55-15<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-7<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-2<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-1<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 15: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 52<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482635/260-10-55-52<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-7<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;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_NetIncomeLoss">
<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 portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482765/220-10-50-6<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4<br><br>Reference 13: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-10<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483581/946-220-45-7<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B<br><br>Reference 32: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483499/205-20-50-7<br><br>Reference 35: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1A<br><br>Reference 37: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1B<br><br>Reference 38: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 39: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-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;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment">
<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 sum of dilutive potential common shares or units used in the calculation of the diluted per-share or per-unit computation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-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;">us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<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 average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.</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/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 16<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-16<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;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<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>Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.</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/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482662/260-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-10<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;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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>63
<FILENAME>R49.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968318448">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Business Combinations (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Oct. 05, 2021</div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Payments to Acquire Businesses, Net of Cash Acquired, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ (0)<span></span>
</td>
<td class="nump">$ (0)<span></span>
</td>
<td class="nump">$ 87,215<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember', window );">Park Environmental Equipment, LLC [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired', window );">Business Acquisition, Percentage of Voting Interests Acquired</a></td>
<td class="nump">100.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Payments to Acquire Businesses, Net of Cash Acquired, Total</a></td>
<td class="nump">$ 90,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_GoodwillPurchaseAccountingAdjustments', window );">Goodwill, Purchase Accounting Adjustments</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,800<span></span>
</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_us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred', window );">Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Consideration Transferred</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,800<span></span>
</td>
<td class="text">&#160;<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_us-gaap_BusinessCombinationAcquisitionRelatedCosts', window );">Business Combination, Acquisition Related Costs</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 100<span></span>
</td>
<td class="nump">$ 3,400<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired">
<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>Percentage of voting equity interests acquired at the acquisition date in the business combination.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479328/805-10-50-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;">us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationAcquisitionRelatedCosts">
<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>This element represents acquisition-related costs incurred to effect a business combination which costs have been expensed during the period. Such costs include finder's fees; advisory, legal, accounting, valuation, and other professional or consulting fees; general administrative costs, including the costs of maintaining an internal acquisitions department; and may include costs of registering and issuing debt and equity securities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 25<br> -Paragraph 23<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479405/805-10-25-23<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;">us-gaap_BusinessCombinationAcquisitionRelatedCosts</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred">
<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>This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to items of consideration transferred in connection with a business combination for which the initial accounting was incomplete.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4A<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-4A<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;">us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_GoodwillPurchaseAccountingAdjustments">
<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>Amount of increase (decrease) from adjustments after acquisition date under purchase accounting of an asset representing the future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482573/350-20-50-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 25<br> -Paragraph 16<br> -SubTopic 10<br> -Topic 805<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479405/805-10-25-16<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;">us-gaap_GoodwillPurchaseAccountingAdjustments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired">
<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 cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-13<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;">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>64
<FILENAME>R50.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960676336">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 3 - Business Combinations - Assets Acquired and Liabilities Assumed (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Oct. 05, 2021</div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract', window );"><strong>Liabilities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 55,504<span></span>
</td>
<td class="nump">$ 55,504<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember', window );">Park Environmental Equipment, LLC [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract', window );"><strong>Assets</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents', window );">Cash and cash equivalents</a></td>
<td class="nump">$ 278<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables', window );">Trade and other receivables</a></td>
<td class="nump">11,034<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory', window );">Inventories</a></td>
<td class="nump">12,773<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets', window );">Prepaid expenses and other</a></td>
<td class="nump">293<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment', window );">Property and equipment</a></td>
<td class="nump">8,076<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets', window );">Operating lease right-of-use assets</a></td>
<td class="nump">58,301<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill', window );">Intangible assets</a></td>
<td class="nump">31,000<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets', window );">Deferred income taxes</a></td>
<td class="nump">347<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets', window );">Total assets acquired</a></td>
<td class="nump">122,102<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract', window );"><strong>Liabilities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable', window );">Accounts payable</a></td>
<td class="nump">2,029<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities', window );">Accrued liabilities</a></td>
<td class="nump">4,067<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities', window );">Operating lease liabilities</a></td>
<td class="nump">58,301<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities', window );">Total liabilities assumed</a></td>
<td class="nump">64,397<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">32,519<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_BusinessCombinationConsiderationTransferred1', window );">Total purchase consideration</a></td>
<td class="nump">$ 90,224<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities">
<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>Amount of accrued liabilities, assumed at the acquisition date.</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;">nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities">
<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>Amount of operating lease liabilities assumed at the acquisition date.</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;">nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets">
<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>Amount of operating lease right-of-use assets acquired at the acquisition date.</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;">nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationConsiderationTransferred1">
<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>Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 30<br> -Paragraph 8<br> -SubTopic 30<br> -Topic 805<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479637/805-30-30-8<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -SubTopic 30<br> -Topic 805<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479581/805-30-50-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 30<br> -Paragraph 7<br> -SubTopic 30<br> -Topic 805<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479637/805-30-30-7<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;">us-gaap_BusinessCombinationConsiderationTransferred1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets">
<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>Amount of assets acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract">
<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 );">- References</a><div><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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents">
<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>Amount of currency on hand as well as demand deposits with banks or financial institutions, acquired at the acquisition date. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets">
<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>Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer, acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables">
<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>Amount due from customers or clients for goods or services, including trade receivables, that have been delivered or sold in the normal course of business, and amounts due from others, including related parties expected to be converted to cash, sold or exchanged within one year or the normal operating cycle, if longer, acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable">
<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>Amount of liabilities incurred for goods and services received that are used in an entity's business and related party payables, assumed at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets">
<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>Amount of deferred tax asset attributable to deductible temporary differences and carryforwards acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill">
<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>Amount of intangible assets, excluding goodwill, acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory">
<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 amount of inventory recognized as of the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 55<br> -Paragraph 37<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479303/805-10-55-37<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities">
<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>Amount of liabilities assumed at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract">
<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 );">- References</a><div><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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment">
<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 amount of property, plant, and equipment recognized as of the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 55<br> -Paragraph 37<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479303/805-10-55-37<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479907/805-20-50-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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<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>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482548/350-20-55-24<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(15))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482598/350-20-45-1<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482573/350-20-50-1<br><br>Reference 6: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482573/350-20-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-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;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>65
<FILENAME>R51.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960956224">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 2 - Business Combinations - Intangible Assets Acquired (Details) - Park Environmental Equipment, LLC [Member]<br> $ in Millions</strong></div></th>
<th class="th">
<div>Oct. 05, 2021 </div>
<div>USD ($)</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_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible Asset Acquired, Useful Life (Year)</a></td>
<td class="text">10 years 4 months 24 days<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_us-gaap_FinitelivedIntangibleAssetsAcquired1', window );">Intangible Asset Acquired, Fair Value</a></td>
<td class="nump">$ 31.0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember', window );">Customer Relationships [Member]</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_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible Asset Acquired, Useful Life (Year)</a></td>
<td class="text">10 years<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_us-gaap_FinitelivedIntangibleAssetsAcquired1', window );">Intangible Asset Acquired, Fair Value</a></td>
<td class="nump">$ 19.8<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember', window );">Trademarks and Trade Names [Member]</a></td>
<td class="text">&#160;<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_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible Asset Acquired, Useful Life (Year)</a></td>
<td class="text">10 years<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_us-gaap_FinitelivedIntangibleAssetsAcquired1', window );">Intangible Asset Acquired, Fair Value</a></td>
<td class="nump">$ 9.6<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember', window );">Patents [Member]</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_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible Asset Acquired, Useful Life (Year)</a></td>
<td class="text">21 years<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_us-gaap_FinitelivedIntangibleAssetsAcquired1', window );">Intangible Asset Acquired, Fair Value</a></td>
<td class="nump">$ 1.3<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember', window );">Backlog [Member]</a></td>
<td class="text">&#160;<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_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible Asset Acquired, Useful Life (Year)</a></td>
<td class="text">7 months 6 days<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_us-gaap_FinitelivedIntangibleAssetsAcquired1', window );">Intangible Asset Acquired, Fair Value</a></td>
<td class="nump">$ 0.3<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife">
<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>Weighted average amortization period of finite-lived intangible assets acquired either individually or as part of a group of assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_us-gaap_FinitelivedIntangibleAssetsAcquired1">
<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>Amount of increase in assets, excluding financial assets, lacking physical substance with a definite life, from an acquisition.</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/disclosureRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FinitelivedIntangibleAssetsAcquired1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksAndTradeNamesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksAndTradeNamesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_PatentsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_PatentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=nwpx_BacklogMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=nwpx_BacklogMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>66
<FILENAME>R52.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920967436160">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Business Combinations - Pro Forma Summary (Details) - Park Environmental Equipment, LLC [Member]<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</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_us-gaap_BusinessAcquisitionsProFormaRevenue', window );">Net sales</a></td>
<td class="nump">$ 384,872<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_us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 15,780<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss">
<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 pro forma net Income or Loss for the period as if the business combination or combinations had been completed at the beginning of a period.</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/disclosureRef<br> -Topic 805<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479328/805-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479328/805-10-50-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;">us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessAcquisitionsProFormaRevenue">
<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 pro forma revenue for a period as if the business combination or combinations had been completed at the beginning of the period.</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/disclosureRef<br> -Topic 805<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479328/805-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479328/805-10-50-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;">us-gaap_BusinessAcquisitionsProFormaRevenue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=nwpx_ParkEnvironmentalEquipmentLlcMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>67
<FILENAME>R53.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920965116624">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 4 - Inventories - Components of Inventories (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_InventoryRawMaterialsNetOfReserves', window );">Raw materials</a></td>
<td class="nump">$ 68,110<span></span>
</td>
<td class="nump">$ 47,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_us-gaap_InventoryWorkInProcessNetOfReserves', window );">Work-in-process</a></td>
<td class="nump">8,912<span></span>
</td>
<td class="nump">5,114<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_us-gaap_InventoryFinishedGoodsNetOfReserves', window );">Finished goods</a></td>
<td class="nump">11,911<span></span>
</td>
<td class="nump">15,773<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_us-gaap_InventorySuppliesNetOfReserves', window );">Supplies</a></td>
<td class="nump">2,296<span></span>
</td>
<td class="nump">2,164<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Total inventories</a></td>
<td class="nump">$ 91,229<span></span>
</td>
<td class="nump">$ 71,029<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryFinishedGoodsNetOfReserves">
<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>Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of merchandise or goods held by the company that are readily available for sale.</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/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 330<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.BB)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480581/330-10-S99-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;">us-gaap_InventoryFinishedGoodsNetOfReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<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>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483467/210-10-45-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryRawMaterialsNetOfReserves">
<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>Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of unprocessed items to be consumed in the manufacturing or production process.</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/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 330<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.BB)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480581/330-10-S99-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;">us-gaap_InventoryRawMaterialsNetOfReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventorySuppliesNetOfReserves">
<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>Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of products used directly or indirectly in the manufacturing or production process, which may or may not become part of the final product. May also include items used in the storage, presentation or transportation of physical goods.</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/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB TOPIC 5.BB)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480581/330-10-S99-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;">us-gaap_InventorySuppliesNetOfReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryWorkInProcessNetOfReserves">
<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>Carrying amount, net of reserves and adjustments, as of the balance sheet date of merchandise or goods which are partially completed. This inventory is generally comprised of raw materials, labor and factory overhead costs, which require further materials, labor and overhead to be converted into finished goods, and which generally require the use of estimates to determine percentage complete and pricing.</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/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 330<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.BB)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480581/330-10-S99-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;">us-gaap_InventoryWorkInProcessNetOfReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>68
<FILENAME>R54.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960800064">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 5 - Property and Equipment (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_PropertyPlantAndEquipmentNet', window );">Property, Plant and Equipment, Net</a></td>
<td class="nump">$ 143,955<span></span>
</td>
<td class="nump">$ 133,166<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_MX', window );">MEXICO</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_PropertyPlantAndEquipmentNet', window );">Property, Plant and Equipment, Net</a></td>
<td class="nump">$ 18,200<span></span>
</td>
<td class="nump">$ 19,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<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>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 10<br> -Topic 360<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482099/360-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 360<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480842/942-360-50-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;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_MX">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_MX</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>69
<FILENAME>R55.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920958496560">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 5 - Property and Equipment - Property, Plant and Equipment (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">$ 246,079<span></span>
</td>
<td class="nump">$ 232,372<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_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment', window );">Less accumulated depreciation and amortization</a></td>
<td class="num">(126,359)<span></span>
</td>
<td class="num">(117,856)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress', window );">Property, Plant and Equipment, Net, Excluding Construction In Progress</a></td>
<td class="nump">119,720<span></span>
</td>
<td class="nump">114,516<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_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">143,955<span></span>
</td>
<td class="nump">133,166<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandImprovementsMember', window );">Land Improvements [Member]</a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">25,064<span></span>
</td>
<td class="nump">23,981<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember', window );">Building [Member]</a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">54,036<span></span>
</td>
<td class="nump">51,389<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember', window );">Leasehold Improvements [Member]</a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">3,182<span></span>
</td>
<td class="nump">3,182<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_MachineryAndEquipmentMember', window );">Machinery and Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">155,278<span></span>
</td>
<td class="nump">149,971<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=nwpx_EquipmentUnderFinanceLeaseMember', window );">Equipment Under Finance Lease [Member]</a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and equipment, gross</a></td>
<td class="nump">8,519<span></span>
</td>
<td class="nump">3,849<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ConstructionInProgressMember', window );">Construction in Progress [Member]</a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">$ 24,235<span></span>
</td>
<td class="nump">$ 18,650<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress">
<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>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services excluding construction in progress and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</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;">nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment">
<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>Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services.</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/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(14))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482099/360-10-50-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;">us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentGross">
<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>Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</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/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 360<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482099/360-10-50-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;">us-gaap_PropertyPlantAndEquipmentGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<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>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 10<br> -Topic 360<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482099/360-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 360<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480842/942-360-50-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;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandImprovementsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandImprovementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_MachineryAndEquipmentMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_MachineryAndEquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=nwpx_EquipmentUnderFinanceLeaseMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=nwpx_EquipmentUnderFinanceLeaseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ConstructionInProgressMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ConstructionInProgressMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>70
<FILENAME>R56.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966793680">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 6 - Goodwill and Intangible Assets (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">$ 55,504<span></span>
</td>
<td class="nump">$ 55,504<span></span>
</td>
</tr>
</table>
<div style="display: none;"><table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<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>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482548/350-20-55-24<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(15))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482598/350-20-45-1<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482573/350-20-50-1<br><br>Reference 6: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482573/350-20-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-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;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table></div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>71
<FILENAME>R57.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920965022080">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 6 - Goodwill and Intangible Assets - Summary of Intangible Assets (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Intangible Assets, Gross</a></td>
<td class="nump">$ 42,283<span></span>
</td>
<td class="nump">$ 43,990<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_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Intangible Assets, Accumulated amortization</a></td>
<td class="num">(11,209)<span></span>
</td>
<td class="num">(8,726)<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_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Intangible assets, net</a></td>
<td class="nump">31,074<span></span>
</td>
<td class="nump">35,264<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember', window );">Customer Relationships [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Intangible Assets, Gross</a></td>
<td class="nump">27,831<span></span>
</td>
<td class="nump">29,209<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_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Intangible Assets, Accumulated amortization</a></td>
<td class="num">(7,315)<span></span>
</td>
<td class="num">(5,845)<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_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Intangible assets, net</a></td>
<td class="nump">20,516<span></span>
</td>
<td class="nump">23,364<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksAndTradeNamesMember', window );">Trademarks and Trade Names [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Intangible Assets, Gross</a></td>
<td class="nump">12,825<span></span>
</td>
<td class="nump">12,825<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_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Intangible Assets, Accumulated amortization</a></td>
<td class="num">(3,734)<span></span>
</td>
<td class="num">(2,490)<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_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Intangible assets, net</a></td>
<td class="nump">9,091<span></span>
</td>
<td class="nump">10,335<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_PatentsMember', window );">Patents [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Intangible Assets, Gross</a></td>
<td class="nump">1,627<span></span>
</td>
<td class="nump">1,627<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_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Intangible Assets, Accumulated amortization</a></td>
<td class="num">(160)<span></span>
</td>
<td class="num">(81)<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_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Intangible assets, net</a></td>
<td class="nump">$ 1,467<span></span>
</td>
<td class="nump">1,546<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_OtherIntangibleAssetsMember', window );">Other Intangible Assets [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Intangible Assets, Gross</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">329<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_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Intangible Assets, Accumulated amortization</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(310)<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_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Intangible assets, net</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 19<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization">
<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>Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</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/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(16))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsGross">
<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>Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</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/disclosureRef<br> -Topic 928<br> -SubTopic 340<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483147/928-340-50-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FiniteLivedIntangibleAssetsGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsNet">
<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>Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</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/disclosureRef<br> -Topic 926<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483154/926-20-50-5<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FiniteLivedIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksAndTradeNamesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksAndTradeNamesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_PatentsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_PatentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_OtherIntangibleAssetsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_OtherIntangibleAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>72
<FILENAME>R58.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920965466400">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 6 - Goodwill and Intangible Assets - Summary of Estimated Amortization Expense (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths', window );">2024</a></td>
<td class="nump">$ 4,033<span></span>
</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_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo', window );">2025</a></td>
<td class="nump">4,033<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree', window );">2026</a></td>
<td class="nump">4,033<span></span>
</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_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour', window );">2027</a></td>
<td class="nump">4,033<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive', window );">2028</a></td>
<td class="nump">4,033<span></span>
</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_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive', window );">Thereafter</a></td>
<td class="nump">10,909<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Total amortization expense</a></td>
<td class="nump">$ 31,074<span></span>
</td>
<td class="nump">$ 35,264<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive">
<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>Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths">
<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>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive">
<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>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour">
<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>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree">
<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>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo">
<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>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsNet">
<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>Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</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/disclosureRef<br> -Topic 926<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483154/926-20-50-5<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 350<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482665/350-30-50-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;">us-gaap_FiniteLivedIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>73
<FILENAME>R59.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920958484672">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 7 - Current Debt (Details Textual) - Interim Funding AgreementIFA [Member]<br> $ in Millions</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th">
<div>Nov. 02, 2023 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2023 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Aug. 02, 2022 </div>
<div>USD ($)</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_us-gaap_DebtInstrumentFaceAmount', window );">Debt Instrument, Face Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 10.8<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_us-gaap_ShortTermBorrowings', window );">Short-Term Debt</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 10.8<span></span>
</td>
<td class="nump">$ 10.8<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DebtWeightedAverageInterestRate', window );">Debt, Weighted Average Interest Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5.87%<span></span>
</td>
<td class="nump">7.08%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_MaximumSeniorLeverageRatio', window );">Maximum Senior Leverage Ratio</a></td>
<td class="nump">3<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_DebtInstrumentCovenantMinimumEbitda', window );">Debt Instrument, Covenant, Minimum EBITDA</a></td>
<td class="nump">$ 35.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentAxis=nwpx_InterimFundingAgreementifaMember', window );">Secured Overnight Financing Rate (SOFR) [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="nump">2.00%<span></span>
</td>
<td class="nump">1.75%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_DebtInstrumentCovenantMinimumEbitda">
<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>Represents the minimum amount of earnings before interest, taxes, depreciation and amortization as part of a debt covenant.</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;">nwpx_DebtInstrumentCovenantMinimumEbitda</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_MaximumSeniorLeverageRatio">
<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 maximum senior leverage ratio.</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;">nwpx_MaximumSeniorLeverageRatio</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:pureItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1">
<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>Percentage points added to the reference rate to compute the variable rate on the debt instrument.</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;">us-gaap_DebtInstrumentBasisSpreadOnVariableRate1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_DebtInstrumentFaceAmount">
<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>Face (par) amount of debt instrument at time of issuance.</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/disclosureRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482900/835-30-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481139/470-20-50-1B<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 69B<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481568/470-20-55-69B<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 69C<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481568/470-20-55-69C<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 835<br> -SubTopic 30<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482925/835-30-45-2<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 835<br> -SubTopic 30<br> -Section 55<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482949/835-30-55-8<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;">us-gaap_DebtInstrumentFaceAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtWeightedAverageInterestRate">
<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>Weighted average interest rate of debt outstanding.</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;">us-gaap_DebtWeightedAverageInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShortTermBorrowings">
<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>Reflects the total carrying amount as of the balance sheet date of debt having initial terms less than one year or the normal operating cycle, if longer.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(16)(a)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(13))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(19)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_ShortTermBorrowings</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentAxis=nwpx_InterimFundingAgreementifaMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentAxis=nwpx_InterimFundingAgreementifaMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_VariableRateAxis=nwpx_SecuredOvernightFinancingRateSOFRMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VariableRateAxis=nwpx_SecuredOvernightFinancingRateSOFRMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>74
<FILENAME>R60.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920965110992">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Credit Agreement (Details Textual)<br> $ in Millions</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Oct. 22, 2021 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2023 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized', window );">Interest Expense, Debt and Finance Leases, Net of Amounts Capitalized</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 4.9<span></span>
</td>
<td class="nump">$ 3.6<span></span>
</td>
<td class="nump">$ 1.2<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_us-gaap_InterestCostsCapitalized', window );">Interest Costs Capitalized</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0.5<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.1<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_us-gaap_LettersOfCreditOutstandingAmount', window );">Letters of Credit Outstanding, Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityAxis=nwpx_WellsFargoBankNAMember', window );">Wells Fargo Bank, N.A. [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity', window );">Line of Credit Facility, Maximum Borrowing Capacity</a></td>
<td class="nump">$ 125.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet', window );">Line of Credit Facility, Increase (Decrease), Net</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">50.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_MaximumSeniorLeverageRatioRequirement', window );">Maximum Senior Leverage Ratio Requirement</a></td>
<td class="nump">3<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization', window );">Debt Instrument, Covenant, Minimum Consolidated Earnings Before Interest, Taxes, Depreciation, and Amortization</a></td>
<td class="nump">$ 35.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityAxis=nwpx_WellsFargoBankNAMember', window );">Wells Fargo Bank, N.A. [Member] | Revolving Credit Facility [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_LineOfCredit', window );">Long-Term Line of Credit</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">54.5<span></span>
</td>
<td class="nump">83.7<span></span>
</td>
<td class="text">&#160;<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_us-gaap_LettersOfCreditOutstandingAmount', window );">Letters of Credit Outstanding, Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1.1<span></span>
</td>
<td class="nump">$ 1.1<span></span>
</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_us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity', window );">Line of Credit Facility, Remaining Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 69.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DebtWeightedAverageInterestRate', window );">Debt, Weighted Average Interest Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">7.43%<span></span>
</td>
<td class="nump">6.07%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityAxis=nwpx_WellsFargoBankNAMember', window );">Wells Fargo Bank, N.A. [Member] | Revolving Credit Facility [Member] | Secured Overnight Financing Rate (SOFR) [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1.75%<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage', window );">Line of Credit Facility, Unused Capacity, Commitment Fee Percentage</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0.30%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityAxis=nwpx_WellsFargoBankNAMember', window );">Wells Fargo Bank, N.A. [Member] | Revolving Credit Facility [Member] | Secured Overnight Financing Rate (SOFR) [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2.35%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage', window );">Line of Credit Facility, Unused Capacity, Commitment Fee Percentage</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0.40%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization">
<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 minimum amount of consolidated earnings before interest, taxes, depreciation, and amortization pursuant to the debt agreement.</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;">nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized">
<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>Represents the amount of interest expense recorded during the period from debt and finance leases, net of amounts capitalized.</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;">nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_nwpx_MaximumSeniorLeverageRatioRequirement">
<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 maximum senior leverage ratio requirement.</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;">nwpx_MaximumSeniorLeverageRatioRequirement</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:pureItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1">
<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>Percentage points added to the reference rate to compute the variable rate on the debt instrument.</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;">us-gaap_DebtInstrumentBasisSpreadOnVariableRate1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_DebtWeightedAverageInterestRate">
<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>Weighted average interest rate of debt outstanding.</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;">us-gaap_DebtWeightedAverageInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InterestCostsCapitalized">
<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>Amount of interest capitalized during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 835<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483013/835-20-50-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;">us-gaap_InterestCostsCapitalized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_LettersOfCreditOutstandingAmount">
<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 total amount of the contingent obligation under letters of credit outstanding as of the reporting date.</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;">us-gaap_LettersOfCreditOutstandingAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LineOfCredit">
<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 carrying value as of the balance sheet date of the current and noncurrent portions of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22))<br> -SubTopic 10<br> -Topic 210<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(16)(a)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(16))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-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;">us-gaap_LineOfCredit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet">
<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>Amount of increase (decrease) of the credit facility.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(f))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-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;">us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity">
<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>Maximum borrowing capacity under the credit facility without consideration of any current restrictions on the amount that could be borrowed or the amounts currently outstanding under the facility.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19(b),22(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity">
<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>Amount of borrowing capacity currently available under the credit facility (current borrowing capacity less the amount of borrowings outstanding).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19(b),22(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage">
<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 fee, expressed as a percentage of the line of credit facility, for available but unused credit capacity under the credit facility.</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;">us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_LineOfCreditFacilityAxis=nwpx_WellsFargoBankNAMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LineOfCreditFacilityAxis=nwpx_WellsFargoBankNAMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CreditFacilityAxis=us-gaap_RevolvingCreditFacilityMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CreditFacilityAxis=us-gaap_RevolvingCreditFacilityMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_VariableRateAxis=nwpx_SecuredOvernightFinancingRateSOFRMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VariableRateAxis=nwpx_SecuredOvernightFinancingRateSOFRMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>75
<FILENAME>R61.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966745520">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 9 - Leases (Details Textual) - USD ($)<br> $ in Millions</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization', window );">Finance Lease, Right-of-Use Asset, Accumulated Amortization</a></td>
<td class="nump">$ 1.4<span></span>
</td>
<td class="nump">$ 1.2<span></span>
</td>
</tr>
</table>
<div style="display: none;"><table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization">
<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>Amount of accumulated amortization of right-of-use asset from finance lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (a)<br> -SubTopic 20<br> -Topic 842<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-4<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -SubTopic 20<br> -Topic 842<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table></div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>76
<FILENAME>R62.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920963599216">
<tr>
<th class="tl" colspan="2" rowspan="1"><div style="width: 200px;"><strong>Note 9 - Leases - Leases Recorded on the Consolidated Balance Sheet (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating leases, Right-of-use assets</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 88,155<span></span>
</td>
<td class="nump">$ 93,124<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_LeaseRightOfUseAsset', window );">Total right-of-use assets</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">95,247<span></span>
</td>
<td class="nump">95,742<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_us-gaap_OperatingLeaseLiability', window );">Present value of lease liabilities, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">90,216<span></span>
</td>
<td class="nump">94,174<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_LeaseLiability', window );">Total lease liabilities</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">97,697<span></span>
</td>
<td class="nump">97,211<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=nwpx_PropertyAndEquipmentMember', window );">Property and Equipment [Member]</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</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_us-gaap_FinanceLeaseRightOfUseAsset', window );">Finance leases, net, included in Property and equipment</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="nump">7,092<span></span>
</td>
<td class="nump">2,618<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember', window );">Accrued Liabilities and Other Long-term Liabilities [Member]</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</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_us-gaap_FinanceLeaseLiability', window );">Present value of lease liabilities, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 7,481<span></span>
</td>
<td class="nump">$ 3,037<span></span>
</td>
</tr>
<tr><td colspan="3"></td></tr>
<tr><td colspan="3"><table class="outerFootnotes" width="100%"><tr class="outerFootnote">
<td style="vertical-align: top; width: 12pt;" valign="top">[1]</td>
<td style="vertical-align: top;" valign="top">Finance lease right-of-use assets are presented net of accumulated amortization of $1.4 million and $1.2 million as of December 31, 2023 and 2022, respectively.</td>
</tr></table></td></tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_LeaseLiability">
<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>Present value of lessee's discounted obligation for lease payments from operating and finance lease.</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;">nwpx_LeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_LeaseRightOfUseAsset">
<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>Amount of lessee's right to use underlying asset under lease.</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;">nwpx_LeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiability">
<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>Present value of lessee's discounted obligation for lease payments from finance lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_FinanceLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseRightOfUseAsset">
<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>Amount, after accumulated amortization, of right-of-use asset from finance lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_FinanceLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<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>Present value of lessee's discounted obligation for lease payments from operating lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<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>Amount of lessee's right to use underlying asset under operating lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=nwpx_PropertyAndEquipmentMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=nwpx_PropertyAndEquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>77
<FILENAME>R63.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960386784">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Leases - Lease Cost (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_FinanceLeaseRightOfUseAssetAmortization', window );">Amortization of right-of-use assets</a></td>
<td class="nump">$ 795<span></span>
</td>
<td class="nump">$ 577<span></span>
</td>
<td class="nump">$ 413<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_us-gaap_FinanceLeaseInterestExpense', window );">Interest on lease liabilities</a></td>
<td class="nump">266<span></span>
</td>
<td class="nump">148<span></span>
</td>
<td class="nump">90<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_us-gaap_OperatingLeaseCost', window );">Operating lease cost</a></td>
<td class="nump">7,765<span></span>
</td>
<td class="nump">7,770<span></span>
</td>
<td class="nump">4,627<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_us-gaap_ShortTermLeaseCost', window );">Short-term lease cost</a></td>
<td class="nump">1,402<span></span>
</td>
<td class="nump">1,000<span></span>
</td>
<td class="nump">993<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_us-gaap_VariableLeaseCost', window );">Variable lease cost</a></td>
<td class="nump">313<span></span>
</td>
<td class="nump">251<span></span>
</td>
<td class="nump">158<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LeaseCost', window );">Total lease cost</a></td>
<td class="nump">$ 10,541<span></span>
</td>
<td class="nump">$ 9,746<span></span>
</td>
<td class="nump">$ 6,281<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseInterestExpense">
<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>Amount of interest expense on finance lease liability.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-4<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_FinanceLeaseInterestExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_FinanceLeaseRightOfUseAssetAmortization">
<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>Amount of amortization expense attributable to right-of-use asset from finance lease.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-4<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_FinanceLeaseRightOfUseAssetAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_LeaseCost">
<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>Amount of lease cost recognized by lessee for lease contract.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_LeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_OperatingLeaseCost">
<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>Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_OperatingLeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_ShortTermLeaseCost">
<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>Amount of short-term lease cost, excluding expense for lease with term of one month or less.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_ShortTermLeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_VariableLeaseCost">
<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>Amount of variable lease cost, excluded from lease liability, recognized when obligation for payment is incurred for finance and operating leases.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_VariableLeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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>78
<FILENAME>R64.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920963457920">
<tr>
<th class="tl" colspan="2" rowspan="1"><div style="width: 200px;"><strong>Note 9 - Leases - Future Maturities of Lease Liabilities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths', window );">2024, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 2,212<span></span>
</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_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths', window );">2024, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">6,874<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo', window );">2025, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">1,923<span></span>
</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_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo', window );">2025, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">6,913<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree', window );">2026, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">1,847<span></span>
</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_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree', window );">2026, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">6,583<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour', window );">2027, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">1,614<span></span>
</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_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour', window );">2027, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">6,192<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive', window );">2028, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">1,147<span></span>
</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_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive', window );">2028, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">6,308<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive', window );">Thereafter, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">0<span></span>
</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_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive', window );">Thereafter, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">76,453<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityPaymentsDue', window );">Total lease payments, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">8,743<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue', window );">Total lease payments, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">109,323<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount', window );">Amount representing interest, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(1,262)<span></span>
</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_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount', window );">Amount representing interest, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(19,107)<span></span>
</td>
<td class="text">&#160;<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_us-gaap_OperatingLeaseLiability', window );">Present value of lease liabilities, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">90,216<span></span>
</td>
<td class="nump">$ 94,174<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_us-gaap_OperatingLeaseLiabilityCurrent', window );">Current portion of lease liabilities, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(4,933)<span></span>
</td>
<td class="num">(4,702)<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_us-gaap_OperatingLeaseLiabilityNoncurrent', window );">Long-term lease liabilities, operating leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">85,283<span></span>
</td>
<td class="nump">89,472<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember', window );">Accrued Liabilities and Other Long-term Liabilities [Member]</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FinanceLeaseLiability', window );">Present value of lease liabilities, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">7,481<span></span>
</td>
<td class="nump">$ 3,037<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilityMember', window );">Accrued Liability [Member]</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FinanceLeaseLiabilityCurrent', window );">Current portion of lease liabilities, included in Accrued liabilities, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="num">(1,721)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=us-gaap_OtherLiabilitiesMember', window );">Other Liabilities [Member]</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_FinanceLeaseLiabilityNoncurrent', window );">Long-term lease liabilities, finance leases</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[2]</sup></td>
<td class="nump">$ 5,760<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr><td colspan="3"></td></tr>
<tr><td colspan="3"><table class="outerFootnotes" width="100%">
<tr class="outerFootnote">
<td style="vertical-align: top; width: 12pt;" valign="top">[1]</td>
<td style="vertical-align: top;" valign="top">Current portion of finance lease liabilities are included in Accrued liabilities.</td>
</tr>
<tr class="outerFootnote">
<td style="vertical-align: top; width: 12pt;" valign="top">[2]</td>
<td style="vertical-align: top;" valign="top">Long-term finance lease liabilities, less current portion are included in Other long-term liabilities.</td>
</tr>
</table></td></tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiability">
<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>Present value of lessee's discounted obligation for lease payments from finance lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_FinanceLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityCurrent">
<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>Present value of lessee's discounted obligation for lease payments from finance lease, classified as current.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_FinanceLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityNoncurrent">
<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>Present value of lessee's discounted obligation for lease payments from finance lease, classified as noncurrent.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_FinanceLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDue">
<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>Amount of lessee's undiscounted obligation for lease payments for finance lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_FinanceLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive">
<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>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths">
<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>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive">
<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>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour">
<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>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree">
<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>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo">
<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>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount">
<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>Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for finance lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue">
<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>Amount of lessee's undiscounted obligation for lease payment for operating lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive">
<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>Amount of lessee's undiscounted obligation for lease payment for operating lease due after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths">
<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>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive">
<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>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour">
<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>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree">
<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>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo">
<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>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount">
<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>Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-6<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;">us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<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>Present value of lessee's discounted obligation for lease payments from operating lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrent">
<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>Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_OperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityNoncurrent">
<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>Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-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;">us-gaap_OperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilityMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=nwpx_AccruedLiabilityMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=us-gaap_OtherLiabilitiesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=us-gaap_OtherLiabilitiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>79
<FILENAME>R65.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920963621648">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 9 - Leases - Lease Terms and Discount Rates for Lease Liabilities (Details)<br></strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1', window );">Finance leases, weighted-average remaining lease term (Year)</a></td>
<td class="text">3 years 10 months 24 days<span></span>
</td>
<td class="text">3 years 6 months 7 days<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_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1', window );">Operating leases, weighted-average remaining lease term (Year)</a></td>
<td class="text">16 years 8 months 23 days<span></span>
</td>
<td class="text">17 years 9 months 29 days<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_us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent', window );">Finance leases, weighted-average discount rate</a></td>
<td class="nump">6.93%<span></span>
</td>
<td class="nump">5.44%<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_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent', window );">Operating leases, weighted-average discount rate</a></td>
<td class="nump">2.17%<span></span>
</td>
<td class="nump">2.19%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent">
<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>Weighted average discount rate for finance lease calculated at point in time.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1">
<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>Weighted average remaining lease term for finance lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent">
<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>Weighted average discount rate for operating lease calculated at point in time.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1">
<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>Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>80
<FILENAME>R66.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920963390192">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Leases - Other Information Related to Operating and Finance Leases (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_FinanceLeaseInterestPaymentOnLiability', window );">Operating cash flows from finance leases</a></td>
<td class="num">$ (266)<span></span>
</td>
<td class="num">$ (148)<span></span>
</td>
<td class="num">$ (90)<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_us-gaap_OperatingLeasePayments', window );">Operating cash flows from operating leases</a></td>
<td class="num">(6,930)<span></span>
</td>
<td class="num">(6,818)<span></span>
</td>
<td class="num">(4,142)<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_us-gaap_FinanceLeasePrincipalPayments', window );">Financing cash flows from finance leases</a></td>
<td class="num">(826)<span></span>
</td>
<td class="num">(597)<span></span>
</td>
<td class="num">(415)<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_us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability', window );">Right-of-use assets obtained in exchange for finance lease liabilities</a></td>
<td class="nump">5,270<span></span>
</td>
<td class="nump">1,466<span></span>
</td>
<td class="nump">853<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_us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability', window );">Right-of-use assets obtained in exchange for operating lease liabilities</a></td>
<td class="nump">$ 952<span></span>
</td>
<td class="nump">$ 568<span></span>
</td>
<td class="nump">$ 16,043<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseInterestPaymentOnLiability">
<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>Amount of interest paid on finance lease liability.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-5<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;">us-gaap_FinanceLeaseInterestPaymentOnLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_FinanceLeasePrincipalPayments">
<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>Amount of cash outflow for principal payment on finance lease.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-5<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;">us-gaap_FinanceLeasePrincipalPayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OperatingLeasePayments">
<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>Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use.</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/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479041/842-20-45-5<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_OperatingLeasePayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability">
<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>Amount of increase in right-of-use asset obtained in exchange for finance lease liability.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability">
<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>Amount of increase in right-of-use asset obtained in exchange for operating lease liability.</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/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147478964/842-20-50-4<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;">us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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>81
<FILENAME>R67.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920964394928">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 10 - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on Recurring Basis (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_AssetsFairValueDisclosure', window );">Total financial assets</a></td>
<td class="nump">$ 4,280<span></span>
</td>
<td class="nump">$ 5,177<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member', window );">Fair Value, Inputs, Level 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_AssetsFairValueDisclosure', window );">Total financial assets</a></td>
<td class="nump">3,391<span></span>
</td>
<td class="nump">3,090<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member', window );">Fair Value, Inputs, Level 2 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_AssetsFairValueDisclosure', window );">Total financial assets</a></td>
<td class="nump">889<span></span>
</td>
<td class="nump">2,087<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member', window );">Fair Value, Inputs, Level 3 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_AssetsFairValueDisclosure', window );">Total financial assets</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_DeferredCompensationPlanMember', window );">Deferred Compensation Plan [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DeferredCompensationPlanAssets', window );">Deferred compensation plan</a></td>
<td class="nump">3,912<span></span>
</td>
<td class="nump">3,587<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_DeferredCompensationPlanMember', window );">Deferred Compensation Plan [Member] | Fair Value, Inputs, Level 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DeferredCompensationPlanAssets', window );">Deferred compensation plan</a></td>
<td class="nump">3,391<span></span>
</td>
<td class="nump">3,090<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_DeferredCompensationPlanMember', window );">Deferred Compensation Plan [Member] | Fair Value, Inputs, Level 2 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DeferredCompensationPlanAssets', window );">Deferred compensation plan</a></td>
<td class="nump">521<span></span>
</td>
<td class="nump">497<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_DeferredCompensationPlanMember', window );">Deferred Compensation Plan [Member] | Fair Value, Inputs, Level 3 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DeferredCompensationPlanAssets', window );">Deferred compensation plan</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember', window );">Foreign Exchange Forward [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeAssets', window );">Derivative assets</a></td>
<td class="nump">42<span></span>
</td>
<td class="nump">728<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_us-gaap_DerivativeLiabilities', window );">Foreign currency forward contracts</a></td>
<td class="num">(115)<span></span>
</td>
<td class="num">(80)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember', window );">Foreign Exchange Forward [Member] | Fair Value, Inputs, Level 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_DerivativeAssets', window );">Derivative assets</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<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_us-gaap_DerivativeLiabilities', window );">Foreign currency forward contracts</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember', window );">Foreign Exchange Forward [Member] | Fair Value, Inputs, Level 2 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeAssets', window );">Derivative assets</a></td>
<td class="nump">42<span></span>
</td>
<td class="nump">728<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_us-gaap_DerivativeLiabilities', window );">Foreign currency forward contracts</a></td>
<td class="num">(115)<span></span>
</td>
<td class="num">(80)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember', window );">Foreign Exchange Forward [Member] | Fair Value, Inputs, Level 3 [Member]</a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_DerivativeAssets', window );">Derivative assets</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<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_us-gaap_DerivativeLiabilities', window );">Foreign currency forward contracts</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember', window );">Interest Rate Swap [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeAssets', window );">Derivative assets</a></td>
<td class="nump">326<span></span>
</td>
<td class="nump">862<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember', window );">Interest Rate Swap [Member] | Fair Value, Inputs, Level 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeAssets', window );">Derivative assets</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember', window );">Interest Rate Swap [Member] | Fair Value, Inputs, Level 2 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeAssets', window );">Derivative assets</a></td>
<td class="nump">326<span></span>
</td>
<td class="nump">862<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember', window );">Interest Rate Swap [Member] | Fair Value, Inputs, Level 3 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeAssets', window );">Derivative assets</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsFairValueDisclosure">
<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>Fair value portion of probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482106/820-10-50-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;">us-gaap_AssetsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredCompensationPlanAssets">
<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>Carrying amount as of the balance sheet date of assets held under deferred compensation agreements.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(17))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_DeferredCompensationPlanAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeAssets">
<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>Fair value, after the effects of master netting arrangements, of a financial asset or other contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes assets not subject to a master netting arrangement and not elected to be offset.</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/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-12<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480493/946-210-55-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-1<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-1<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 12: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(3)(c))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5C<br> -Subparagraph (SX 210.12-13C(Column H)(Footnote 7))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5C<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(3)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5<br> -Subparagraph (SX 210.12-13(Column A)(Footnote 3))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5C<br> -Subparagraph (SX 210.12-13C(Column H))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5C<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5A<br> -Subparagraph (SX 210.12-13A(Column E))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5A<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5B<br> -Subparagraph (SX 210.12-13B(Column E))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5B<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5B<br> -Subparagraph (SX 210.12-13B(Column E)(Footnote 4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5B<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483466/210-20-50-3<br><br>Reference 22: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 210<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483444/210-20-55-22<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483444/210-20-55-10<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-10<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;">us-gaap_DerivativeAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeLiabilities">
<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>Fair value, after the effects of master netting arrangements, of a financial liability or contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes liabilities not subject to a master netting arrangement and not elected to be offset.</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/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 10: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480524/946-210-50-6<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(9)(e))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5C<br> -Subparagraph (SX 210.12-13C(Column H)(Footnote 7))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5C<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(9)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(9)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5<br> -Subparagraph (SX 210.12-13(Column G)(Footnote 8))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5C<br> -Subparagraph (SX 210.12-13C(Column H))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5C<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5<br> -Subparagraph (SX 210.12-13(Column G))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5A<br> -Subparagraph (SX 210.12-13A(Column E))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5A<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5B<br> -Subparagraph (SX 210.12-13B(Column E))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5B<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 320<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5B<br> -Subparagraph (SX 210.12-13B(Column E)(Footnote 4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480032/946-320-S99-5B<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483466/210-20-50-3<br><br>Reference 22: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 210<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483444/210-20-55-22<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483444/210-20-55-10<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-10<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;">us-gaap_DerivativeLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_DeferredCompensationPlanMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=nwpx_DeferredCompensationPlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>82
<FILENAME>R68.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920964857344">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Derivative Instruments and Hedging Activities (Details Textual)<br> $ in Thousands, &#8364; in Millions, $ in Millions</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="2"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="3"></th>
</tr>
<tr>
<th class="th">
<div>Dec. 31, 2023 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2023 </div>
<div>CAD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2023 </div>
<div>EUR (&#8364;)</div>
</th>
<th class="th"><div>Apr. 03, 2023</div></th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>CAD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>EUR (&#8364;)</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_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax', window );">Other Comprehensive Income (Loss), Cash Flow Hedge, Gain (Loss), before Reclassification and Tax</a></td>
<td class="nump">$ 300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ReclassificationTypeAxis=nwpx_ReclassifiedToNetSalesMember', window );">Reclassified to Net Sales [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths', window );">Cash Flow Hedge Gain (Loss) to be Reclassified within 12 Months</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ReclassificationTypeAxis=nwpx_ReclassifiedToInterestExpenseMember', window );">Reclassified to Interest Expense [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths', window );">Cash Flow Hedge Gain (Loss) to be Reclassified within 12 Months</a></td>
<td class="nump">$ 300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_The1941InterestRateSwapMember', window );">The 1.941% Interest Rate Swap [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeFixedInterestRate', window );">Derivative, Fixed Interest Rate</a></td>
<td class="nump">1.941%<span></span>
</td>
<td class="nump">1.941%<span></span>
</td>
<td class="nump">1.941%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_The1941InterestRateSwapMember', window );">The 1.941% Interest Rate Swap [Member] | Cash Flow Hedging [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeNotionalAmount', window );">Derivative, Notional Amount</a></td>
<td class="nump">$ 6,700<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 26,700<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_The296InterestRateSwapMember', window );">The 2.96% Interest Rate Swap [Member] | Cash Flow Hedging [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeNotionalAmount', window );">Derivative, Notional Amount</a></td>
<td class="nump">13,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_DerivativeFixedInterestRate', window );">Derivative, Fixed Interest Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2.96%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_DesignatedAsHedgingInstrumentMember', window );">Designated as Hedging Instrument [Member] | Foreign Exchange Forward [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_DerivativeNotionalAmount', window );">Derivative, Notional Amount</a></td>
<td class="nump">5,100<span></span>
</td>
<td class="nump">$ 6.7<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">17,100<span></span>
</td>
<td class="nump">$ 23.2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_DesignatedAsHedgingInstrumentMember', window );">Designated as Hedging Instrument [Member] | Foreign Exchange Forward 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_DerivativeNotionalAmount', window );">Derivative, Notional Amount</a></td>
<td class="nump">1,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#8364; 1.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#8364; 1.1<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Not Designated as Hedging Instrument [Member] | Foreign Exchange Forward [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_DerivativeNotionalAmount', window );">Derivative, Notional Amount</a></td>
<td class="nump">4,900<span></span>
</td>
<td class="nump">$ 6.4<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 300<span></span>
</td>
<td class="nump">$ 0.4<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Not Designated as Hedging Instrument [Member] | Foreign Exchange Forward 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_DerivativeNotionalAmount', window );">Derivative, Notional Amount</a></td>
<td class="nump">$ 1,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#8364; 1.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths">
<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 estimated net amount of existing gains or losses on cash flow hedges at the reporting date expected to be reclassified to earnings within the next 12 months.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480870/815-30-50-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;">us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_DerivativeFixedInterestRate">
<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>Fixed interest rate related to the interest rate derivative.</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;">us-gaap_DerivativeFixedInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeNotionalAmount">
<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>Nominal or face amount used to calculate payment on derivative.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 815<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-1B<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 815<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-1A<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;">us-gaap_DerivativeNotionalAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax">
<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>Amount, before tax and reclassification, of gain (loss) from derivative instrument designated and qualifying cash flow hedge included in assessment of hedge effectiveness.</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/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-11<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4C<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-4C<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480627/815-20-45-3<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4A<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-4A<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-10A<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;">us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_ReclassificationTypeAxis=nwpx_ReclassifiedToNetSalesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ReclassificationTypeAxis=nwpx_ReclassifiedToNetSalesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ReclassificationTypeAxis=nwpx_ReclassifiedToInterestExpenseMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ReclassificationTypeAxis=nwpx_ReclassifiedToInterestExpenseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_The1941InterestRateSwapMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=nwpx_The1941InterestRateSwapMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis=us-gaap_CashFlowHedgingMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis=us-gaap_CashFlowHedgingMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_The296InterestRateSwapMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=nwpx_The296InterestRateSwapMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HedgingDesignationAxis=us-gaap_DesignatedAsHedgingInstrumentMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HedgingDesignationAxis=us-gaap_DesignatedAsHedgingInstrumentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=nwpx_ForeignExchangeForward1Member">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=nwpx_ForeignExchangeForward1Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>83
<FILENAME>R69.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968358768">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Derivative Instruments and Hedging Activities - Summary of Gains (Losses) (Details) - Not Designated as Hedging Instrument [Member] - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet', window );">Gains (losses) recognized on derivatives</a></td>
<td class="num">$ (98)<span></span>
</td>
<td class="nump">$ 19<span></span>
</td>
<td class="nump">$ 9<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Foreign Exchange Forward [Member] | Sales [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet', window );">Gains (losses) recognized on derivatives</a></td>
<td class="num">(708)<span></span>
</td>
<td class="nump">660<span></span>
</td>
<td class="nump">9<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Foreign Exchange Forward [Member] | Property and Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet', window );">Gains (losses) recognized on derivatives</a></td>
<td class="num">(109)<span></span>
</td>
<td class="num">(680)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Interest Rate Swap [Member] | Interest Expense [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet', window );">Gains (losses) recognized on derivatives</a></td>
<td class="nump">$ 719<span></span>
</td>
<td class="nump">$ 39<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet">
<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>Amount of realized and unrealized gain (loss) of derivative instruments not designated or qualifying as hedging instruments.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4C<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-4C<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4CC<br> -SubTopic 10<br> -Topic 815<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480434/815-10-50-4CC<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;">us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_SalesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_SalesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=nwpx_PropertyAndEquipmentMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=nwpx_PropertyAndEquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_InterestExpenseMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_InterestExpenseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>84
<FILENAME>R70.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920964885408">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stockholders' Equity (Details Textual) - USD ($)<br> $ / shares in Units, $ in Thousands</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 01, 2023</div></th>
<th class="th"><div>Nov. 02, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Sep. 22, 2022</div></th>
<th class="th"><div>Sep. 02, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_CommonStockParOrStatedValuePerShare', window );">Common Stock, Par or Stated Value Per Share (in dollars per share)</a></td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_StockRepurchaseProgramAuthorizedAmount1', window );">Stock Repurchase Program, Authorized Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 30,000<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_Rule10b51TradingPlanDesignatedAmount', window );">Rule 10b5-1 Trading Plan, Designated Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 10,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Stock Repurchased and Retired During Period, Value</a></td>
<td class="nump">$ 835<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1', window );">Stock Repurchase Program, Remaining Authorized Repurchase Amount</a></td>
<td class="nump">$ 29,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareRepurchaseProgramAxis=nwpx_ShareRepurchaseProgramMember', window );">Share Repurchase Program [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Stock Repurchased and Retired During Period, Shares (in shares)</a></td>
<td class="nump">29,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Stock Repurchased and Retired During Period, Value</a></td>
<td class="nump">$ 800<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SubsidiarySaleOfStockAxis=nwpx_AtthemarketOfferingMember', window );">At-the-Market Offering [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_EquityOfferingMaximumOfferingAmount', window );">Equity Offering, Maximum Offering Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 50,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_EquityOfferingMaximumOfferingAmount">
<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>Maximum value of company's equity authorized for issuance under equity offering.</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;">nwpx_EquityOfferingMaximumOfferingAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_Rule10b51TradingPlanDesignatedAmount">
<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 amount of stock designated for repurchase under the Company's Rule 10b5-1 trading plan.</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;">nwpx_Rule10b51TradingPlanDesignatedAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockParOrStatedValuePerShare">
<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>Face amount or stated value per share of common stock.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_CommonStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchaseProgramAuthorizedAmount1">
<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>Amount of stock repurchase plan authorized.</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;">us-gaap_StockRepurchaseProgramAuthorizedAmount1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1">
<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>Amount remaining of a stock repurchase plan authorized.</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;">us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares">
<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>Number of shares that have been repurchased and retired during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480008/505-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_StockRepurchasedAndRetiredDuringPeriodShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue">
<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>Equity impact of the value of stock that has been repurchased and retired during the period. The excess of the purchase price over par value can be charged against retained earnings (once the excess is fully allocated to additional paid in capital).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481112/505-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480008/505-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_StockRepurchasedAndRetiredDuringPeriodValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_ShareRepurchaseProgramAxis=nwpx_ShareRepurchaseProgramMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareRepurchaseProgramAxis=nwpx_ShareRepurchaseProgramMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubsidiarySaleOfStockAxis=nwpx_AtthemarketOfferingMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubsidiarySaleOfStockAxis=nwpx_AtthemarketOfferingMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>85
<FILENAME>R71.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960479504">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Retirement Plans (Details Textual)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th">
<div>Dec. 31, 2023 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_RetirementPlanExpense', window );">Retirement Plan Expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 2,500<span></span>
</td>
<td class="nump">$ 2,200<span></span>
</td>
<td class="nump">$ 1,800<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RetirementPlanTypeAxis=nwpx_DefinedContributionPlanMember', window );">Defined Contribution Plan [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions', window );">Company Matching Percentage on First Eight Percent of Employee Contributions</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">50.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent', window );">Employee Contribution Percentage for Which Company Will Match at Fifty Percent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RetirementPlanTypeAxis=nwpx_ParkusaDefinedContributionPlanMember', window );">ParkUSA Defined Contribution Plan [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions', window );">Company Matching Percentage on First Eight Percent of Employee Contributions</a></td>
<td class="nump">100.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent', window );">Employee Contribution Percentage for Which Company Will Match at One Hundred Percent</a></td>
<td class="nump">4.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember', window );">Pension Plan [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_NumberOfNoncontributoryDefinedBenefitPlans', window );">Number of Non-contributory Defined Benefit Plans</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent', window );">Assets for Plan Benefits, Defined Benefit Plan</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 500<span></span>
</td>
<td class="nump">100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax', window );">Accumulated Other Comprehensive Income (Loss), Unrecognized Net Actuarial Losses, Net of Tax</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,200<span></span>
</td>
<td class="nump">1,500<span></span>
</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_us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation', window );">Defined Benefit Plan, Accumulated Benefit Obligation</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,600<span></span>
</td>
<td class="nump">4,800<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DefinedBenefitPlanFairValueOfPlanAssets', window );">Defined Benefit Plan, Plan Assets, Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,100<span></span>
</td>
<td class="nump">4,900<span></span>
</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_us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost', window );">Defined Benefit Plan, Net Periodic Benefit Cost (Credit)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 100<span></span>
</td>
<td class="nump">$ 100<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_us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate', window );">Defined Benefit Plan, Assumptions Used Calculating Benefit Obligation, Discount Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4.69%<span></span>
</td>
<td class="nump">4.89%<span></span>
</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_us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets', window );">Defined Benefit Plan, Assumptions Used Calculating Net Periodic Benefit Cost, Expected Long-Term Rate of Return on Plan Assets</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">7.00%<span></span>
</td>
<td class="nump">7.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RetirementPlanTypeAxis=nwpx_NonqualifiedRetirementSavingsPlanMember', window );">Non-qualified Retirement Savings Plan [Member] | Other Long-term Liabilities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent', window );">Deferred Compensation Liability, Classified, Noncurrent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3,900<span></span>
</td>
<td class="nump">$ 3,600<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax">
<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>Represents the amount of unrecognized actuarial loss recognized in accumulated other comprehensive income (loss), net of tax.</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;">nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions">
<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>Company matching percentage on first 8% of employee contributions under defined contribution retirement plan.</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;">nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent">
<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>Employee contribution for which company will match at 50% under defined contribution retirement plan.</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;">nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent">
<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>Employee contribution for which company will match at 100% under defined contribution retirement plan.</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;">nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_nwpx_NumberOfNoncontributoryDefinedBenefitPlans">
<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>Number of noncontributory defined benefit plans.</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;">nwpx_NumberOfNoncontributoryDefinedBenefitPlans</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</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_nwpx_RetirementPlanExpense">
<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>Represents retirement plan expense.</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;">nwpx_RetirementPlanExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent">
<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>Aggregate carrying value as of the balance sheet date of the liabilities for all deferred compensation arrangements payable beyond one year (or the operating cycle, if longer).</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;">us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation">
<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>Amount of actuarial present value of benefits attributed to employee service rendered, excluding assumptions about future compensation level.</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/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-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;">us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent">
<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>Amount of asset, recognized in statement of financial position, for overfunded defined benefit pension and other postretirement plans.</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/exampleRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 17<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480482/715-20-55-17<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(10))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(7)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480535/715-20-45-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480535/715-20-45-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-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;">us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate">
<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>Weighted average rate for present value of future retirement benefits cash flows, used to determine benefit obligation of defined benefit plan.</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/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (k)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-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;">us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets">
<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>Weighted average rate of return on plan assets, reflecting average rate of earnings expected on existing plan assets and expected contributions, used to determine net periodic benefit cost of defined benefit plan.</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/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-8<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (k)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-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;">us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_DefinedBenefitPlanFairValueOfPlanAssets">
<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>Amount of asset segregated and restricted to provide benefit under defined benefit plan. Asset includes, but is not limited to, stock, bond, other investment, earning from investment, and contribution by employer and employee.</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/exampleRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 17<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480482/715-20-55-17<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(iv)(02)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(iv)(01)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 6: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(iv)(01)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-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;">us-gaap_DefinedBenefitPlanFairValueOfPlanAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost">
<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>Amount of net periodic benefit cost (credit) for defined benefit plan.</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/exampleRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 17<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480482/715-20-55-17<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 18<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480482/715-20-55-18<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-6<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;">us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_RetirementPlanTypeAxis=nwpx_DefinedContributionPlanMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanTypeAxis=nwpx_DefinedContributionPlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetirementPlanTypeAxis=nwpx_ParkusaDefinedContributionPlanMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanTypeAxis=nwpx_ParkusaDefinedContributionPlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetirementPlanTypeAxis=nwpx_NonqualifiedRetirementSavingsPlanMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanTypeAxis=nwpx_NonqualifiedRetirementSavingsPlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=nwpx_OtherLongtermLiabilitiesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=nwpx_OtherLongtermLiabilitiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>86
<FILENAME>R72.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920963380512">
<tr>
<th class="tl" colspan="2" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Share-based Compensation (Details Textual)<br> $ / shares in Units, $ in Millions</strong></div></th>
<th class="th" colspan="4">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Dec. 31, 2023 </div>
<div>USD ($) </div>
<div>$ / shares </div>
<div>shares</div>
</th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($) </div>
<div>$ / shares </div>
<div>shares</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($) </div>
<div>$ / shares </div>
<div>shares</div>
</th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_NumberOfActiveStockIncentivePlans', window );">Number Of Active Stock Incentive Plans</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_NumberOfInactiveStockIncentivePlans', window );">Number Of Inactive Stock Incentive Plans</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance', window );">Common Stock, Capital Shares Reserved for Future Issuance (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">722,573<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed', window );">Common Stock, Capital Shares Reserved for Future Issuance, Percentage Vesting of Outstanding PSAs Assumed</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">100.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember', window );">Performance Shares [Member]</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_PerformanceShareAwardTargetLevelPercentage', window );">Performance Share Award Target Level, Percentage</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">100.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_PerformanceAwardsIssuedMultiplier', window );">Performance Awards Issued Multiplier</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">132.00%<span></span>
</td>
<td class="nump">126.00%<span></span>
</td>
<td class="nump">159.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance', window );">Share Based Compensation Arrangement By Share Based Payment Award Equity Instruments Other Than Options Nonvested Number At Target Level Of Performance (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">170,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember', window );">Performance Shares [Member] | Minimum [Member]</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_PerformanceAwardsIssuedMultiplier', window );">Performance Awards Issued Multiplier</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">0.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember', window );">Performance Shares [Member] | Maximum [Member]</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_PerformanceAwardsIssuedMultiplier', window );">Performance Awards Issued Multiplier</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">200.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember', window );">Restricted Stock Units and Performance Stock Awards [Member]</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share) | $ / shares</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 28.41<span></span>
</td>
<td class="nump">$ 30.68<span></span>
</td>
<td class="nump">$ 33.3<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue', window );">Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Fair Value | $</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 4.4<span></span>
</td>
<td class="nump">$ 2.4<span></span>
</td>
<td class="nump">$ 3.3<span></span>
</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_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions', window );">Share-Based Payment Arrangement, Nonvested Award, Excluding Option, Cost Not yet Recognized, Amount | $</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 3.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">1 year 6 months<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod', window );">Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="nump">134,498<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=nwpx_StockAwardsMember', window );">Stock Awards [Member] | Director [Member]</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share) | $ / shares</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 29.51<span></span>
</td>
<td class="nump">$ 30.75<span></span>
</td>
<td class="nump">$ 30.94<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod', window );">Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">15,904<span></span>
</td>
<td class="nump">11,380<span></span>
</td>
<td class="nump">12,606<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr><td colspan="5"></td></tr>
<tr><td colspan="5"><table class="outerFootnotes" width="100%"><tr class="outerFootnote">
<td style="vertical-align: top; width: 12pt;" valign="top">[1]</td>
<td style="vertical-align: top;" valign="top">The number of PSAs disclosed in this table are at the target level of 100%.</td>
</tr></table></td></tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed">
<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>Represents the vesting percentage of PSAs used as an assumption to determine the number of capital shares reserved for future issuance.</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;">nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_NumberOfActiveStockIncentivePlans">
<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 number of active stock incentive plans.</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;">nwpx_NumberOfActiveStockIncentivePlans</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</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_nwpx_NumberOfInactiveStockIncentivePlans">
<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 number of inactive stock incentive plans.</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;">nwpx_NumberOfInactiveStockIncentivePlans</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</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_nwpx_PerformanceAwardsIssuedMultiplier">
<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 percentage of the performance awards issued multiplier.</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;">nwpx_PerformanceAwardsIssuedMultiplier</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_nwpx_PerformanceShareAwardTargetLevelPercentage">
<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>Represents the target level percentage for performance share awards.</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;">nwpx_PerformanceShareAwardTargetLevelPercentage</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance">
<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 number of non-vested equity-based payment instruments at a target level of performance, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date.</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;">nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance">
<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>Aggregate number of common shares reserved for future issuance.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.29)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-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;">us-gaap_CommonStockCapitalSharesReservedForFutureIssuance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1">
<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>Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions">
<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>Amount of cost to be recognized for nonvested award under share-based payment arrangement. Excludes share and unit options.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod">
<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 number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(01)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<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 weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(01)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue">
<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>Fair value of share-based awards for which the grantee gained the right by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=nwpx_StockAwardsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=nwpx_StockAwardsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_TitleOfIndividualAxis=srt_DirectorMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_TitleOfIndividualAxis=srt_DirectorMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>87
<FILENAME>R73.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920958567888">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Share-based Compensation - Share-based Compensation Expense (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_AllocatedShareBasedCompensationExpense', window );">Share-based compensation expense</a></td>
<td class="nump">$ 3,672<span></span>
</td>
<td class="nump">$ 3,702<span></span>
</td>
<td class="nump">$ 3,216<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_CostOfSalesMember', window );">Cost of Sales [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_AllocatedShareBasedCompensationExpense', window );">Share-based compensation expense</a></td>
<td class="nump">1,027<span></span>
</td>
<td class="nump">1,320<span></span>
</td>
<td class="nump">1,003<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_SellingGeneralAndAdministrativeExpensesMember', window );">Selling, General and Administrative Expenses [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_AllocatedShareBasedCompensationExpense', window );">Share-based compensation expense</a></td>
<td class="nump">$ 2,645<span></span>
</td>
<td class="nump">$ 2,382<span></span>
</td>
<td class="nump">$ 2,213<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllocatedShareBasedCompensationExpense">
<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>Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.F)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479830/718-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_AllocatedShareBasedCompensationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncomeStatementLocationAxis=us-gaap_CostOfSalesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_CostOfSalesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_SellingGeneralAndAdministrativeExpensesMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_SellingGeneralAndAdministrativeExpensesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>88
<FILENAME>R74.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920958542416">
<tr>
<th class="tl" colspan="2" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Share-based Compensation - RSU and PSA Activity (Details) - Restricted Stock Units and Performance Stock Awards [Member] - $ / shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber', window );">Unvested RSUs and PSAs (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="nump">200,924<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Unvested RSUs and PSAs, weighted average grant date fair value (in dollars per share)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 30.8<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod', window );">RSUs and PSAs granted (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="nump">134,498<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">RSUs and PSAs granted (in dollars per share)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 28.41<span></span>
</td>
<td class="nump">$ 30.68<span></span>
</td>
<td class="nump">$ 33.3<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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod', window );">Unvested RSUs and PSAs canceled (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="num">(13,589)<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue', window );">Unvested RSUs and PSAs canceled, weighted average grant date fair value (in dollars per share)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 30.82<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">RSUs and PSAs vested (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1],[2]</sup></td>
<td class="num">(95,442)<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue', window );">RSUs and PSAs vested, weighted average grant date fair value (in dollars per share)</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[2]</sup></td>
<td class="nump">$ 30.12<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber', window );">Unvested RSUs and PSAs (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="nump">226,391<span></span>
</td>
<td class="nump">200,924<span></span>
</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Unvested RSUs and PSAs, weighted average grant date fair value (in dollars per share)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 29.66<span></span>
</td>
<td class="nump">$ 30.8<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr><td colspan="4"></td></tr>
<tr><td colspan="4"><table class="outerFootnotes" width="100%">
<tr class="outerFootnote">
<td style="vertical-align: top; width: 12pt;" valign="top">[1]</td>
<td style="vertical-align: top;" valign="top">The number of PSAs disclosed in this table are at the target level of 100%.</td>
</tr>
<tr class="outerFootnote">
<td style="vertical-align: top; width: 12pt;" valign="top">[2]</td>
<td style="vertical-align: top;" valign="top">For the PSAs vested on March 31, 2023, the actual number of common shares that were issued was determined by multiplying the PSAs at the target level of 100%, as disclosed in this table, by a payout percentage based on the performance-based conditions achieved. The payout percentage was 159% for the 2020-2022 performance period, 126% for the 2021-2022 performance period, and 132% for the 2022 performance period.</td>
</tr>
</table></td></tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod">
<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 number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(03)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue">
<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>Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(03)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod">
<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 number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(01)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<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 weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(01)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber">
<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 number of non-vested equity-based payment instruments, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue">
<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>Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod">
<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 number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(02)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue">
<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 weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement.</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/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(02)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480429/718-10-50-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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_AwardTypeAxis=nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>89
<FILENAME>R75.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920963523360">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Commitments and Contingencies (Details Textual)<br> $ in Millions</strong></div></th>
<th class="th" colspan="1">1 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th">
<div>Jan. 31, 2017 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2023 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jun. 30, 2014 </div>
<div>USD ($)</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_us-gaap_LettersOfCreditOutstandingAmount', window );">Letters of Credit Outstanding, Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherCommitmentsAxis=us-gaap_CapitalAdditionsMember', window );">Capital Addition Purchase Commitments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived', window );">Other Commitment, Amount Paid for Equipment Purchased Yet Not Received</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1.2<span></span>
</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_us-gaap_OtherCommitment', window );">Other Commitment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 5.2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LossContingenciesByNatureOfContingencyAxis=nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember', window );">Portland Harbor Natural Resources Trustee Council [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_LossContingencyAccrualCarryingValueCurrent', window );">Loss Contingency, Accrual, Current</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.4<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EnvironmentalRemediationSiteAxis=nwpx_PortlandHarborSuperfundSiteMember', window );">Portland Harbor Superfund Site [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_NumberOfPotentiallyResponsibleParties', window );">Number Of Potentially Responsible Parties</a></td>
<td class="nump">150<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_EstimatedCostOfEPASelectedRemedy', window );">Estimated Cost of EPA Selected Remedy</a></td>
<td class="nump">$ 1,000.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_EstimatedTimeToCompleteSelectedEPARemedy', window );">Estimated Time to Complete Selected EPA Remedy (Year)</a></td>
<td class="text">13 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_CounterpartyNameAxis=nwpx_LowerWillametteGroupMember', window );">Lower Willamette Group [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_NumberOfPotentiallyResponsibleParties', window );">Number Of Potentially Responsible Parties</a></td>
<td class="nump">14<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_EstimatedCostOfEPASelectedRemedy">
<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 estimated cost of the remedy selected by EPA.</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;">nwpx_EstimatedCostOfEPASelectedRemedy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_nwpx_EstimatedTimeToCompleteSelectedEPARemedy">
<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 estimated amount of time to complete the selected EPA remedy.</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;">nwpx_EstimatedTimeToCompleteSelectedEPARemedy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_nwpx_NumberOfPotentiallyResponsibleParties">
<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>Number of potentially responsible parties for Portland Harbor Superfund site.</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;">nwpx_NumberOfPotentiallyResponsibleParties</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived">
<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>Amount of commitment of payment for equipment purchased but not received.</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;">nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LettersOfCreditOutstandingAmount">
<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 total amount of the contingent obligation under letters of credit outstanding as of the reporting date.</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;">us-gaap_LettersOfCreditOutstandingAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LossContingencyAccrualCarryingValueCurrent">
<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>Amount of loss contingency liability expected to be resolved within one year or the normal operating cycle, if longer.</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/disclosureRef<br> -Topic 450<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483076/450-20-50-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;">us-gaap_LossContingencyAccrualCarryingValueCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherCommitment">
<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>Minimum amount of other commitment not otherwise specified in the taxonomy. Excludes commitments explicitly modeled in the taxonomy, including but not limited to, long-term and short-term purchase commitments, recorded and unrecorded purchase obligations, supply commitments, registration payment arrangements, leases, debt, product warranties, guarantees, environmental remediation obligations, and pensions.</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;">us-gaap_OtherCommitment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherCommitmentsAxis=us-gaap_CapitalAdditionsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherCommitmentsAxis=us-gaap_CapitalAdditionsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LossContingenciesByNatureOfContingencyAxis=nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LossContingenciesByNatureOfContingencyAxis=nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EnvironmentalRemediationSiteAxis=nwpx_PortlandHarborSuperfundSiteMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EnvironmentalRemediationSiteAxis=nwpx_PortlandHarborSuperfundSiteMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CounterpartyNameAxis=nwpx_LowerWillametteGroupMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CounterpartyNameAxis=nwpx_LowerWillametteGroupMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>90
<FILENAME>R76.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968387344">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Revenue 1 (Details Textual)<br> $ in Millions</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Dec. 31, 2023 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2022 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax', window );">Increase (Decrease) in Revenue from Contract with Customers, Including Assessed Tax</a></td>
<td class="num">$ (1.1)<span></span>
</td>
<td class="num">$ (0.6)<span></span>
</td>
<td class="nump">$ 2.0<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_us-gaap_RevenueRemainingPerformanceObligation', window );">Revenue, Remaining Performance Obligation, Amount</a></td>
<td class="nump">$ 273.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember', window );">Revenue Benchmark [Member] | Customer Concentration Risk [Member] | Precast Infrastructure and Engineered Systems [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_NumberOfMajorCustomers', window );">Number of Major Customers</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember', window );">Revenue Benchmark [Member] | Customer Concentration Risk [Member] | One SPP Customer [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_ConcentrationRiskPercentage1', window );">Concentration Risk, Percentage</a></td>
<td class="nump">10.00%<span></span>
</td>
<td class="nump">12.00%<span></span>
</td>
<td class="nump">12.00%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax">
<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 increase (decrease) during the period of the amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer.</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;">nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_nwpx_NumberOfMajorCustomers">
<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>Represents the number of major customers accounting for 10% or more of the specified concentration risk benchmark, which includes, but not limited to, sales revenue, accounts receivable, etc.</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;">nwpx_NumberOfMajorCustomers</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</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_us-gaap_ConcentrationRiskPercentage1">
<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 an entity that discloses a concentration risk in relation to quantitative amount, which serves as the "benchmark" (or denominator) in the equation, this concept represents the concentration percentage derived from the division.</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/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 42<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-42<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-21<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-20<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 18<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482861/275-10-50-18<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482861/275-10-50-20<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;">us-gaap_ConcentrationRiskPercentage1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_RevenueRemainingPerformanceObligation">
<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>Amount of transaction price allocated to performance obligation that has not been recognized as revenue.</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/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 606<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-13<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;">us-gaap_RevenueRemainingPerformanceObligation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByTypeAxis=us-gaap_CustomerConcentrationRiskMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByTypeAxis=us-gaap_CustomerConcentrationRiskMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=nwpx_PrecastInfrastructureAndEngineeredSystemsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=nwpx_PrecastInfrastructureAndEngineeredSystemsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_MajorCustomersAxis=nwpx_OneSppCustomerMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_MajorCustomersAxis=nwpx_OneSppCustomerMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>91
<FILENAME>R77.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920966901168">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 16 - Revenue 2 (Details Textual)<br></strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2024-01-01', window );">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2024-01-01</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_us-gaap_RevenueRemainingPerformanceObligationPercentage', window );">Revenue, Remaining Performance Obligation, Percentage</a></td>
<td class="nump">76.00%<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_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1', window );">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period (Year)</a></td>
<td class="text">1 year<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2025-01-01', window );">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]: 2025-01-01</a></td>
<td class="text">&#160;<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_us-gaap_RevenueRemainingPerformanceObligationPercentage', window );">Revenue, Remaining Performance Obligation, Percentage</a></td>
<td class="nump">23.00%<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_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1', window );">Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period (Year)</a></td>
<td class="text">1 year<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1">
<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>Period in which remaining performance obligation is expected to be recognized as revenue, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</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/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)(1)<br> -SubTopic 10<br> -Topic 606<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-13<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;">us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRemainingPerformanceObligationPercentage">
<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>Percentage of remaining performance obligation to total remaining performance obligation not recognized as revenue.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)(1)<br> -SubTopic 10<br> -Topic 606<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-13<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;">us-gaap_RevenueRemainingPerformanceObligationPercentage</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2024-01-01">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2024-01-01</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2025-01-01">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis=2025-01-01</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>92
<FILENAME>R78.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968237008">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Revenue - Net Sales From Continuing Operations by Geographic Region (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">$ 444,355<span></span>
</td>
<td class="nump">$ 457,665<span></span>
</td>
<td class="nump">$ 333,313<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_US', window );">UNITED STATES</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">420,925<span></span>
</td>
<td class="nump">423,961<span></span>
</td>
<td class="nump">313,729<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_CA', window );">CANADA</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">$ 23,430<span></span>
</td>
<td class="nump">$ 33,704<span></span>
</td>
<td class="nump">$ 19,584<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<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>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</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/disclosureRef<br> -Topic 924<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479941/924-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-5<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 42<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-42<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 40<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-40<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-41<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-4<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;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_srt_StatementGeographicalAxis=country_US">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_US</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_CA">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_CA</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>93
<FILENAME>R79.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920958497184">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Revenue - Disaggregation of Revenue (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">$ 444,355<span></span>
</td>
<td class="nump">$ 457,665<span></span>
</td>
<td class="nump">$ 333,313<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TimingOfTransferOfGoodOrServiceAxis=us-gaap_TransferredOverTimeMember', window );">Transferred over Time [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">296,381<span></span>
</td>
<td class="nump">307,572<span></span>
</td>
<td class="nump">259,823<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TimingOfTransferOfGoodOrServiceAxis=us-gaap_TransferredAtPointInTimeMember', window );">Transferred at Point in Time [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">$ 147,974<span></span>
</td>
<td class="nump">$ 150,093<span></span>
</td>
<td class="nump">$ 73,490<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<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>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</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/disclosureRef<br> -Topic 924<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479941/924-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-5<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 42<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-42<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 40<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-40<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-41<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-4<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;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_TimingOfTransferOfGoodOrServiceAxis=us-gaap_TransferredOverTimeMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TimingOfTransferOfGoodOrServiceAxis=us-gaap_TransferredOverTimeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TimingOfTransferOfGoodOrServiceAxis=us-gaap_TransferredAtPointInTimeMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TimingOfTransferOfGoodOrServiceAxis=us-gaap_TransferredAtPointInTimeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>94
<FILENAME>R80.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920967261328">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Revenue - Contract With Customer Assets and Liabilities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_ContractWithCustomerAssetNet', window );">Balance, beginning of year</a></td>
<td class="nump">$ 121,778<span></span>
</td>
<td class="nump">$ 107,170<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings', window );">Revenue recognized in advance of billings</a></td>
<td class="nump">291,812<span></span>
</td>
<td class="nump">306,095<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_ContractWithCustomerAssetBillings', window );">Contract With Customer, Asset, Billings</a></td>
<td class="num">(293,356)<span></span>
</td>
<td class="num">(294,506)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_ContractWithCustomerAssetOther', window );">Contract With Customer, Asset, Other</a></td>
<td class="nump">282<span></span>
</td>
<td class="nump">3,019<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_us-gaap_ContractWithCustomerAssetNet', window );">Balance, end of year</a></td>
<td class="nump">120,516<span></span>
</td>
<td class="nump">121,778<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_us-gaap_ContractWithCustomerLiability', window );">Balance, beginning of year</a></td>
<td class="nump">17,456<span></span>
</td>
<td class="nump">2,623<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_ContractWithCustomerLiabilityBillings', window );">Contract With Customer, Liability, Billings</a></td>
<td class="nump">20,815<span></span>
</td>
<td class="nump">17,618<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_us-gaap_ContractWithCustomerLiabilityRevenueRecognized', window );">Revenue recognized</a></td>
<td class="num">(16,984)<span></span>
</td>
<td class="num">(2,663)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_ContractWithCustomerLiabilityOther', window );">Contract With Customer, Liability, Other</a></td>
<td class="nump">163<span></span>
</td>
<td class="num">(122)<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_us-gaap_ContractWithCustomerLiability', window );">Balance, end of year</a></td>
<td class="nump">$ 21,450<span></span>
</td>
<td class="nump">$ 17,456<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_ContractWithCustomerAssetBillings">
<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>Represents billings portion of the contract with customer, asset.</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;">nwpx_ContractWithCustomerAssetBillings</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_nwpx_ContractWithCustomerAssetOther">
<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>Represents the other portion of contract with customer, asset.</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;">nwpx_ContractWithCustomerAssetOther</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings">
<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>Represents the revenue recognized in advance of billings portion of the contract with customer, asset.</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;">nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_nwpx_ContractWithCustomerLiabilityBillings">
<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>Represents the billings portion of the contract with customer liability.</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;">nwpx_ContractWithCustomerLiabilityBillings</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_nwpx_ContractWithCustomerLiabilityOther">
<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>Represents the other portion of contract with customer, liability.</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;">nwpx_ContractWithCustomerLiabilityOther</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_ContractWithCustomerAssetNet">
<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>Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time.</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/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479837/606-10-45-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479837/606-10-45-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-8<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;">us-gaap_ContractWithCustomerAssetNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiability">
<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>Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable.</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/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479837/606-10-45-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-8<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479837/606-10-45-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;">us-gaap_ContractWithCustomerLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiabilityRevenueRecognized">
<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>Amount of revenue recognized that was previously included in balance of obligation to transfer good or service to customer for which consideration from customer has been received or is due.</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/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-8<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;">us-gaap_ContractWithCustomerLiabilityRevenueRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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>95
<FILENAME>R81.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920960892144">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Income Taxes (Details Textual) - USD ($)<br> $ in Millions</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_TaxCreditCarryforwardAmount', window );">Tax Credit Carryforward, Amount</a></td>
<td class="nump">$ 0.3<span></span>
</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_us-gaap_OpenTaxYear', window );">Open Tax Year</a></td>
<td class="text">2019 2020 2021 2022 2023<span></span>
</td>
<td class="text">&#160;<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_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued', window );">Unrecognized Tax Benefits, Income Tax Penalties Accrued</a></td>
<td class="nump">$ 0.4<span></span>
</td>
<td class="nump">$ 0.1<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_DomesticCountryMember', window );">Domestic Tax Authority [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_TaxCreditCarryforwardExpirationYear', window );">Tax Credit Carryforward, Expiration Year</a></td>
<td class="text">2024<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_DomesticCountryMember', window );">Domestic Tax Authority [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_TaxCreditCarryforwardExpirationYear', window );">Tax Credit Carryforward, Expiration Year</a></td>
<td class="text">2026<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_StateAndLocalJurisdictionMember', window );">State and Local Jurisdiction [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_TaxCreditCarryforwardAmount', window );">Tax Credit Carryforward, Amount</a></td>
<td class="nump">$ 4.4<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_TaxCreditCarryforwardExpirationYear', window );">Tax Credit Carryforward, Expiration Year</a></td>
<td class="text">2023<span></span>
</td>
<td class="text">&#160;<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_us-gaap_OperatingLossCarryforwards', window );">Operating Loss Carryforwards</a></td>
<td class="nump">$ 18.4<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_StateAndLocalJurisdictionMember', window );">State and Local Jurisdiction [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_OperatingLossCarryforwardsExpirationYear', window );">Operating Loss Carryforwards, Expiration Year</a></td>
<td class="text">2024<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_StateAndLocalJurisdictionMember', window );">State and Local Jurisdiction [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_OperatingLossCarryforwardsExpirationYear', window );">Operating Loss Carryforwards, Expiration Year</a></td>
<td class="text">2036<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_ForeignCountryMember', window );">Foreign Tax Authority [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_OperatingLossCarryforwards', window );">Operating Loss Carryforwards</a></td>
<td class="nump">$ 8.4<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_ForeignCountryMember', window );">Foreign Tax Authority [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_OperatingLossCarryforwardsExpirationYear', window );">Operating Loss Carryforwards, Expiration Year</a></td>
<td class="text">2024<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_ForeignCountryMember', window );">Foreign Tax Authority [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_OperatingLossCarryforwardsExpirationYear', window );">Operating Loss Carryforwards, Expiration Year</a></td>
<td class="text">2033<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_OperatingLossCarryforwardsExpirationYear">
<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>Expiration year of the operating loss carryforward.</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;">nwpx_OperatingLossCarryforwardsExpirationYear</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:gYearItemType</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_nwpx_TaxCreditCarryforwardExpirationYear">
<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>Expiration year of the tax credit carryforward.</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;">nwpx_TaxCreditCarryforwardExpirationYear</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:gYearItemType</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_us-gaap_OpenTaxYear">
<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>Tax year that remains open to examination under enacted tax laws, in YYYY format.</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/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 15<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-15<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;">us-gaap_OpenTaxYear</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:gYearListItemType</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_us-gaap_OperatingLossCarryforwards">
<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>Amount of operating loss carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-3<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;">us-gaap_OperatingLossCarryforwards</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TaxCreditCarryforwardAmount">
<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 amount of the tax credit carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-3<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;">us-gaap_TaxCreditCarryforwardAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued">
<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>Amount of statutory penalties accrued for a tax position claimed or expected to be claimed by the entity, in its tax return.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 15<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-15<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;">us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_DomesticCountryMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityAxis=us-gaap_DomesticCountryMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_StateAndLocalJurisdictionMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityAxis=us-gaap_StateAndLocalJurisdictionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_ForeignCountryMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityAxis=us-gaap_ForeignCountryMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>96
<FILENAME>R82.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920968179776">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Income Taxes - Income (Loss) from Continuing Operations (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic', window );">United States</a></td>
<td class="nump">$ 27,814<span></span>
</td>
<td class="nump">$ 40,271<span></span>
</td>
<td class="nump">$ 14,000<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_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign', window );">Foreign</a></td>
<td class="nump">1,465<span></span>
</td>
<td class="nump">1,079<span></span>
</td>
<td class="nump">1,158<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income taxes</a></td>
<td class="nump">$ 29,279<span></span>
</td>
<td class="nump">$ 41,350<span></span>
</td>
<td class="nump">$ 15,158<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic">
<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 portion of earnings or loss from continuing operations before income taxes that is attributable to domestic operations.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-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;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest">
<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>Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.</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/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(11))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 5: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 235<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479557/942-235-S99-1<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 25<br> -Paragraph 1<br> -SubTopic 20<br> -Topic 940<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481913/940-20-25-1<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(10))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 10: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(15))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-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;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign">
<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 portion of earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.3)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-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;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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>97
<FILENAME>R83.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920964397296">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Income Taxes - Summary of Components of Income Tax Expense for Continuing Operations (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_CurrentFederalTaxExpenseBenefit', window );">Federal</a></td>
<td class="nump">$ 6,817<span></span>
</td>
<td class="nump">$ 8,443<span></span>
</td>
<td class="nump">$ 2,256<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_us-gaap_CurrentStateAndLocalTaxExpenseBenefit', window );">State</a></td>
<td class="nump">1,519<span></span>
</td>
<td class="nump">1,264<span></span>
</td>
<td class="nump">1,064<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_us-gaap_CurrentForeignTaxExpenseBenefit', window );">Foreign</a></td>
<td class="nump">289<span></span>
</td>
<td class="nump">198<span></span>
</td>
<td class="nump">213<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CurrentIncomeTaxExpenseBenefit', window );">Total current income tax expense</a></td>
<td class="nump">8,625<span></span>
</td>
<td class="nump">9,905<span></span>
</td>
<td class="nump">3,533<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_us-gaap_DeferredFederalIncomeTaxExpenseBenefit', window );">Federal</a></td>
<td class="num">(612)<span></span>
</td>
<td class="num">(22)<span></span>
</td>
<td class="nump">573<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_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit', window );">State</a></td>
<td class="nump">195<span></span>
</td>
<td class="nump">340<span></span>
</td>
<td class="num">(464)<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_us-gaap_DeferredForeignIncomeTaxExpenseBenefit', window );">Foreign</a></td>
<td class="num">(1)<span></span>
</td>
<td class="num">(22)<span></span>
</td>
<td class="num">(7)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit', window );">Total deferred income tax expense (benefit)</a></td>
<td class="num">(418)<span></span>
</td>
<td class="nump">296<span></span>
</td>
<td class="nump">102<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Total income tax expense</a></td>
<td class="nump">$ 8,207<span></span>
</td>
<td class="nump">$ 10,201<span></span>
</td>
<td class="nump">$ 3,635<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit">
<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>Amount of deferred state, local, federal and foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.</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;">nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_CurrentFederalTaxExpenseBenefit">
<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>Amount of current federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current national tax expense (benefit) for non-US (United States of America) jurisdiction.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 740<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-9<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-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;">us-gaap_CurrentFederalTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_CurrentForeignTaxExpenseBenefit">
<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>Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 740<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-9<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;">us-gaap_CurrentForeignTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_CurrentIncomeTaxExpenseBenefit">
<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>Amount of current income tax expense (benefit) pertaining to taxable income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-9<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;">us-gaap_CurrentIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_CurrentStateAndLocalTaxExpenseBenefit">
<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>Amount of current state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 740<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-9<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-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;">us-gaap_CurrentStateAndLocalTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_DeferredFederalIncomeTaxExpenseBenefit">
<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>Amount of deferred federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred national tax expense (benefit) for non-US (United States of America) jurisdiction.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-9<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-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;">us-gaap_DeferredFederalIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_DeferredForeignIncomeTaxExpenseBenefit">
<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>Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-9<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-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;">us-gaap_DeferredForeignIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit">
<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>Amount of deferred state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-9<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-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;">us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncomeTaxExpenseBenefit">
<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>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</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/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-10<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -SubTopic 20<br> -Topic 740<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482659/740-20-45-2<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -SubTopic 10<br> -Topic 235<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-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;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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>98
<FILENAME>R84.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920965010480">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Income Taxes - Effective Income Tax Rate Reconciliation (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate', window );">Income tax expense at federal statutory rate</a></td>
<td class="nump">$ 6,148<span></span>
</td>
<td class="nump">$ 8,683<span></span>
</td>
<td class="nump">$ 3,183<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_us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes', window );">State expense, net of federal income tax effect</a></td>
<td class="nump">942<span></span>
</td>
<td class="nump">1,463<span></span>
</td>
<td class="nump">547<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_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance', window );">Change in valuation allowance</a></td>
<td class="num">(30)<span></span>
</td>
<td class="num">(1)<span></span>
</td>
<td class="num">(247)<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_us-gaap_IncomeTaxReconciliationNondeductibleExpense', window );">Nondeductible expenses</a></td>
<td class="nump">257<span></span>
</td>
<td class="num">(35)<span></span>
</td>
<td class="num">(31)<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_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential', window );">Foreign rate differential</a></td>
<td class="nump">133<span></span>
</td>
<td class="nump">97<span></span>
</td>
<td class="nump">104<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount', window );">Accrued interest on uncertain income tax positions</a></td>
<td class="nump">264<span></span>
</td>
<td class="nump">106<span></span>
</td>
<td class="nump">16<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount', window );">State franchise tax</a></td>
<td class="nump">250<span></span>
</td>
<td class="nump">110<span></span>
</td>
<td class="nump">92<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_us-gaap_IncomeTaxReconciliationOtherAdjustments', window );">Other</a></td>
<td class="nump">243<span></span>
</td>
<td class="num">(222)<span></span>
</td>
<td class="num">(29)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Total income tax expense</a></td>
<td class="nump">$ 8,207<span></span>
</td>
<td class="nump">$ 10,201<span></span>
</td>
<td class="nump">$ 3,635<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_us-gaap_EffectiveIncomeTaxRateContinuingOperations', window );">Effective income tax rate</a></td>
<td class="nump">28.00%<span></span>
</td>
<td class="nump">24.70%<span></span>
</td>
<td class="nump">24.00%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount">
<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>Represents the amount of accrued interest on uncertain income tax positions.</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;">nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount">
<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>Represents the amount of state franchise tax.</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;">nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_EffectiveIncomeTaxRateContinuingOperations">
<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>Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</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/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_EffectiveIncomeTaxRateContinuingOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_IncomeTaxExpenseBenefit">
<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>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</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/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-10<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -SubTopic 20<br> -Topic 740<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482659/740-20-45-2<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -SubTopic 10<br> -Topic 235<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-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;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance">
<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>Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in the valuation allowance for deferred tax assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential">
<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>Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to foreign income tax expense (benefit).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate">
<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 amount of income tax expense or benefit for the period computed by applying the domestic federal statutory tax rates to pretax income from continuing operations.</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/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncomeTaxReconciliationNondeductibleExpense">
<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>Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to nondeductible expenses.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_IncomeTaxReconciliationNondeductibleExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncomeTaxReconciliationOtherAdjustments">
<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>Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other adjustments.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_IncomeTaxReconciliationOtherAdjustments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes">
<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>Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to state and local income tax expense (benefit).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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>99
<FILENAME>R85.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920965528256">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 17 - Income Taxes - Summary of Current and Noncurrent Deferred Tax Assets and Liabilities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</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_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits', window );">Accrued employee benefits</a></td>
<td class="nump">$ 3,096<span></span>
</td>
<td class="nump">$ 3,840<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_us-gaap_DeferredTaxAssetsInventory', window );">Inventories</a></td>
<td class="nump">380<span></span>
</td>
<td class="nump">350<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_DeferredTaxAssetTradeReceivableNet', window );">Trade receivable, net</a></td>
<td class="nump">532<span></span>
</td>
<td class="nump">329<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_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards', window );">Net operating loss carryforwards</a></td>
<td class="nump">3,429<span></span>
</td>
<td class="nump">2,944<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_us-gaap_DeferredTaxAssetsTaxCreditCarryforwards', window );">Tax credit carryforwards</a></td>
<td class="nump">2,777<span></span>
</td>
<td class="nump">2,863<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_DeferredTaxAssetContractAssetsNet', window );">Contract assets, net</a></td>
<td class="nump">934<span></span>
</td>
<td class="nump">403<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_us-gaap_DeferredTaxAssetsOther', window );">Other</a></td>
<td class="nump">1,952<span></span>
</td>
<td class="nump">1,074<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsGross', window );">Deferred Tax Assets, Gross</a></td>
<td class="nump">13,100<span></span>
</td>
<td class="nump">11,803<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_us-gaap_DeferredTaxAssetsValuationAllowance', window );">Valuation allowance</a></td>
<td class="num">(6,641)<span></span>
</td>
<td class="num">(6,051)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsNet', window );">Deferred Tax Assets, Net of Valuation Allowance</a></td>
<td class="nump">6,459<span></span>
</td>
<td class="nump">5,752<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_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment', window );">Property and equipment</a></td>
<td class="num">(13,850)<span></span>
</td>
<td class="num">(13,550)<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_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets', window );">Intangible assets</a></td>
<td class="num">(800)<span></span>
</td>
<td class="num">(1,319)<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_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill', window );">Goodwill</a></td>
<td class="num">(1,164)<span></span>
</td>
<td class="num">(606)<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_us-gaap_DeferredTaxLiabilitiesPrepaidExpenses', window );">Prepaid expenses</a></td>
<td class="num">(1,217)<span></span>
</td>
<td class="num">(1,285)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilities', window );">Deferred Tax Liabilities, Gross</a></td>
<td class="num">(17,031)<span></span>
</td>
<td class="num">(16,760)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredTaxLiabilities', window );">Net deferred income tax liabilities</a></td>
<td class="num">(10,572)<span></span>
</td>
<td class="num">(11,008)<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_us-gaap_DeferredIncomeTaxLiabilitiesNet', window );">Deferred income taxes</a></td>
<td class="num">(10,942)<span></span>
</td>
<td class="num">(11,402)<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_us-gaap_DeferredTaxLiabilities', window );">Net deferred income tax liabilities</a></td>
<td class="num">(10,572)<span></span>
</td>
<td class="num">(11,008)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=us-gaap_OtherAssetsMember', window );">Other Assets [Member]</a></td>
<td class="text">&#160;<span></span>
</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_us-gaap_DeferredIncomeTaxAssetsNet', window );">Deferred income tax assets, included in Other assets</a></td>
<td class="nump">$ 370<span></span>
</td>
<td class="nump">$ 394<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_DeferredTaxAssetContractAssetsNet">
<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>Amount before allocation of valuation allowances of deferred tax asset attributable to contract assets, net.</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;">nwpx_DeferredTaxAssetContractAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_DeferredTaxAssetTradeReceivableNet">
<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>Amount before allocation of valuation allowances of deferred tax asset attributable to trade receivables, net.</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;">nwpx_DeferredTaxAssetTradeReceivableNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxAssetsNet">
<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>Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting.</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/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482525/740-10-45-4<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482525/740-10-45-6<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;">us-gaap_DeferredIncomeTaxAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilities">
<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>Amount of deferred tax liability attributable to taxable temporary differences.</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/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-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;">us-gaap_DeferredIncomeTaxLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilitiesNet">
<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>Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting.</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/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(15)(b)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482525/740-10-45-4<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482525/740-10-45-6<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;">us-gaap_DeferredIncomeTaxLiabilitiesNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsGross">
<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>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.</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/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_DeferredTaxAssetsGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsInventory">
<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>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from inventory.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-6<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-8<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;">us-gaap_DeferredTaxAssetsInventory</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsNet">
<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>Amount after allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_DeferredTaxAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsOperatingLossCarryforwards">
<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>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-6<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-8<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;">us-gaap_DeferredTaxAssetsOperatingLossCarryforwards</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsOther">
<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>Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences, classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-6<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-8<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;">us-gaap_DeferredTaxAssetsOther</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsTaxCreditCarryforwards">
<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>Amount, before allocation of a valuation allowances, of deferred tax assets attributable to deductible tax credit carryforwards including, but not limited to, research, foreign, general business, alternative minimum tax, and other deductible tax credit carryforwards.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-6<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-8<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-3<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;">us-gaap_DeferredTaxAssetsTaxCreditCarryforwards</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits">
<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>Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences from employee benefits, classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-6<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-8<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;">us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsValuationAllowance">
<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>Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.</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/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-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;">us-gaap_DeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilities">
<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>Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences without jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482525/740-10-45-6<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;">us-gaap_DeferredTaxLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill">
<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>Amount of deferred tax liability attributable to taxable temporary differences from goodwill.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-6<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-8<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 740<br> -Section 25<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479692/805-740-25-9<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 740<br> -Section 25<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479692/805-740-25-8<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;">us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets">
<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>Amount of deferred tax liability attributable to taxable temporary differences from intangible assets other than goodwill.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-6<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-8<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;">us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesPrepaidExpenses">
<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>Amount of deferred tax consequences attributable to taxable temporary differences derived from prepaid expenses.</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;">us-gaap_DeferredTaxLiabilitiesPrepaidExpenses</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment">
<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>Amount of deferred tax liability attributable to taxable temporary differences from property, plant, and equipment.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-6<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-8<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;">us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=us-gaap_OtherAssetsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=us-gaap_OtherAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>100
<FILENAME>R86.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920963583984">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Income Taxes - Summary of Changes in Unrecognized Tax Benefits (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_UnrecognizedTaxBenefits', window );">Unrecognized income tax benefits, beginning of year</a></td>
<td class="nump">$ 4,472<span></span>
</td>
<td class="nump">$ 4,366<span></span>
</td>
<td class="nump">$ 4,350<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_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions', window );">Increases for positions taken in prior years</a></td>
<td class="nump">264<span></span>
</td>
<td class="nump">106<span></span>
</td>
<td class="nump">16<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_us-gaap_UnrecognizedTaxBenefits', window );">Unrecognized income tax benefits, end of year</a></td>
<td class="nump">$ 4,736<span></span>
</td>
<td class="nump">$ 4,472<span></span>
</td>
<td class="nump">$ 4,366<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefits">
<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>Amount of unrecognized tax benefits.</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/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-15A<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10B<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482525/740-10-45-10B<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;">us-gaap_UnrecognizedTaxBenefits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions">
<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>Amount of increase in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.</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/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-15A<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;">us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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>101
<FILENAME>R87.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920963332784">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax', window );">Total</a></td>
<td class="num">$ (960)<span></span>
</td>
<td class="num">$ (789)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember', window );">Foreign Exchange Forward [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax', window );">Unrealized gain (loss) on cash flow hedges, net of income tax (expense) benefit</a></td>
<td class="num">(13)<span></span>
</td>
<td class="nump">94<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember', window );">Interest Rate Swap [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax', window );">Unrealized gain (loss) on cash flow hedges, net of income tax (expense) benefit</a></td>
<td class="nump">246<span></span>
</td>
<td class="nump">649<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember', window );">Pension Plan [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax', window );">Pension liability adjustment, net of income tax benefit of $482 and $592</a></td>
<td class="num">$ (1,193)<span></span>
</td>
<td class="num">$ (1,532)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax">
<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>Amount, after tax, of accumulated other comprehensive (income) loss for defined benefit plan, that has not been recognized in net periodic benefit cost (credit).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-14A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (i-k)<br> -SubTopic 10<br> -Topic 220<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-10A<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 715<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (j)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480506/715-20-50-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;">us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax">
<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>Amount, after tax, of accumulated increase (decrease) in equity from transaction and other event and circumstance from nonowner source.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-14A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-11<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480016/944-40-65-2<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480016/944-40-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-14<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;">us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax">
<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>Amount, after tax, of accumulated gain (loss) on derivative instrument designated and qualifying as cash flow hedge included in assessment of hedge effectiveness.</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/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-11<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;">us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>102
<FILENAME>R88.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920965501312">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details) (Parentheticals) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember', window );">Foreign Exchange Forward [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax', window );">Accumulated Other Comprehensive Income (Loss) Cumulative Change in Net Gain (Loss) from Cash Flow Hedge Effect, Tax</a></td>
<td class="nump">$ 12<span></span>
</td>
<td class="num">$ (33)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember', window );">Interest Rate Swap [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax', window );">Accumulated Other Comprehensive Income (Loss) Cumulative Change in Net Gain (Loss) from Cash Flow Hedge Effect, Tax</a></td>
<td class="nump">79<span></span>
</td>
<td class="nump">213<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember', window );">Pension Plan [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit', window );">Accumulated Other Comprehensive Income (Loss) Defined Benefit Pension and Other Postretirement Plans Tax Expense (Benefit)</a></td>
<td class="nump">$ 482<span></span>
</td>
<td class="nump">$ 592<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax">
<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>Tax expense (benefit) included in accumulated other comprehensive income for cash flow hedges.</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;">nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit">
<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>Tax expense (benefit) included in accumulated other comprehensive income for defined benefit pension and other postretirement plans.</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;">nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>nwpx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetirementPlanTypeAxis=us-gaap_PensionPlansDefinedBenefitMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>103
<FILENAME>R89.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920958216896">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Accumulated Other Comprehensive Loss - Components of Accumulated Other Comprehensive Loss (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="nump">$ 318,274<span></span>
</td>
<td class="nump">$ 283,383<span></span>
</td>
<td class="nump">$ 269,626<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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Net current period adjustments to Other comprehensive income</a></td>
<td class="num">(171)<span></span>
</td>
<td class="nump">893<span></span>
</td>
<td class="nump">184<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_us-gaap_StockholdersEquity', window );">Balances, December 31, 2022</a></td>
<td class="nump">340,360<span></span>
</td>
<td class="nump">318,274<span></span>
</td>
<td class="nump">283,383<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember', window );">Accumulated Defined Benefit Plans Adjustment Attributable to Parent [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="num">(1,532)<span></span>
</td>
<td class="num">(1,487)<span></span>
</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_us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent', window );">Other comprehensive income (loss) before reclassifications</a></td>
<td class="nump">338<span></span>
</td>
<td class="nump">41<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent', window );">Amounts reclassified from Accumulated other comprehensive loss</a></td>
<td class="nump">1<span></span>
</td>
<td class="num">(86)<span></span>
</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Net current period adjustments to Other comprehensive income</a></td>
<td class="nump">339<span></span>
</td>
<td class="num">(45)<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockholdersEquity', window );">Balances, December 31, 2022</a></td>
<td class="num">(1,193)<span></span>
</td>
<td class="num">(1,532)<span></span>
</td>
<td class="num">(1,487)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember', window );">Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Foreign Exchange Forward [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="nump">94<span></span>
</td>
<td class="num">(195)<span></span>
</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_us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent', window );">Other comprehensive income (loss) before reclassifications</a></td>
<td class="num">(115)<span></span>
</td>
<td class="num">(100)<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent', window );">Amounts reclassified from Accumulated other comprehensive loss</a></td>
<td class="nump">8<span></span>
</td>
<td class="nump">389<span></span>
</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Net current period adjustments to Other comprehensive income</a></td>
<td class="num">(107)<span></span>
</td>
<td class="nump">289<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockholdersEquity', window );">Balances, December 31, 2022</a></td>
<td class="num">(13)<span></span>
</td>
<td class="nump">94<span></span>
</td>
<td class="num">(195)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember', window );">Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Interest Rate Swap [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="nump">649<span></span>
</td>
<td class="nump">0<span></span>
</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_us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent', window );">Other comprehensive income (loss) before reclassifications</a></td>
<td class="nump">142<span></span>
</td>
<td class="nump">678<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent', window );">Amounts reclassified from Accumulated other comprehensive loss</a></td>
<td class="num">(545)<span></span>
</td>
<td class="num">(29)<span></span>
</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Net current period adjustments to Other comprehensive income</a></td>
<td class="num">(403)<span></span>
</td>
<td class="nump">649<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockholdersEquity', window );">Balances, December 31, 2022</a></td>
<td class="nump">246<span></span>
</td>
<td class="nump">649<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember', window );">AOCI Attributable to Parent [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="num">(789)<span></span>
</td>
<td class="num">(1,682)<span></span>
</td>
<td class="num">(1,866)<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_us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent', window );">Other comprehensive income (loss) before reclassifications</a></td>
<td class="nump">365<span></span>
</td>
<td class="nump">619<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent', window );">Amounts reclassified from Accumulated other comprehensive loss</a></td>
<td class="num">(536)<span></span>
</td>
<td class="nump">274<span></span>
</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Net current period adjustments to Other comprehensive income</a></td>
<td class="num">(171)<span></span>
</td>
<td class="nump">893<span></span>
</td>
<td class="text">&#160;<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_us-gaap_StockholdersEquity', window );">Balances, December 31, 2022</a></td>
<td class="num">$ (960)<span></span>
</td>
<td class="num">$ (789)<span></span>
</td>
<td class="num">$ (1,682)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent">
<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>Amount after tax, before reclassification adjustments, of other comprehensive income (loss), attributable to parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-14A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -SubTopic 10<br> -Topic 220<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482739/220-10-55-15<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;">us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent">
<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>Amount after tax of other comprehensive income (loss) attributable to parent entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 19<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-19<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 20<br> -SubTopic 10<br> -Topic 810<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-20<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -SubTopic 10<br> -Topic 810<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-1A<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1B<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1A<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;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent">
<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>Amount after tax of reclassification adjustments of other comprehensive income (loss) attributable to parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-14A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -SubTopic 10<br> -Topic 220<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482739/220-10-55-15<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;">us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_StockholdersEquity">
<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>Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest.</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/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-12<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.6-05(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-2<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(4)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(7))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 9: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 10: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 11: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 12: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 13: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 14: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480418/310-10-S99-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;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>104
<FILENAME>R90.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920965550832">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Accumulated Other Comprehensive Loss - Reclassification of Accumulated Other Comprehensive Loss (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_CostOfGoodsAndServicesSold', window );">Cost of sales</a></td>
<td class="nump">$ 366,713<span></span>
</td>
<td class="nump">$ 371,810<span></span>
</td>
<td class="nump">$ 289,059<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_us-gaap_OtherNonoperatingIncomeExpense', window );">Non-service cost</a></td>
<td class="nump">276<span></span>
</td>
<td class="nump">97<span></span>
</td>
<td class="nump">328<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_us-gaap_IncomeTaxExpenseBenefit', window );">Tax (expense) benefit</a></td>
<td class="num">(8,207)<span></span>
</td>
<td class="num">(10,201)<span></span>
</td>
<td class="num">(3,635)<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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">21,072<span></span>
</td>
<td class="nump">31,149<span></span>
</td>
<td class="nump">11,523<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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">444,355<span></span>
</td>
<td class="nump">457,665<span></span>
</td>
<td class="nump">333,313<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_us-gaap_InterestExpense', window );">Gain on cash flow hedges</a></td>
<td class="nump">4,855<span></span>
</td>
<td class="nump">3,568<span></span>
</td>
<td class="nump">1,202<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis=us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember', window );">Reclassification out of Accumulated Other Comprehensive Income [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">536<span></span>
</td>
<td class="num">(274)<span></span>
</td>
<td class="nump">24<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis=us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember', window );">Reclassification out of Accumulated Other Comprehensive Income [Member] | Accumulated Defined Benefit Plans Adjustment Attributable to Parent [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_CostOfGoodsAndServicesSold', window );">Cost of sales</a></td>
<td class="num">(13)<span></span>
</td>
<td class="num">(13)<span></span>
</td>
<td class="num">(7)<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_us-gaap_OtherNonoperatingIncomeExpense', window );">Non-service cost</a></td>
<td class="nump">11<span></span>
</td>
<td class="nump">127<span></span>
</td>
<td class="nump">110<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_us-gaap_IncomeTaxExpenseBenefit', window );">Tax (expense) benefit</a></td>
<td class="nump">1<span></span>
</td>
<td class="num">(28)<span></span>
</td>
<td class="num">(25)<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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="num">(1)<span></span>
</td>
<td class="nump">86<span></span>
</td>
<td class="nump">78<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis=us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember', window );">Reclassification out of Accumulated Other Comprehensive Income [Member] | Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Foreign Exchange Forward [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_IncomeTaxExpenseBenefit', window );">Tax (expense) benefit</a></td>
<td class="nump">2<span></span>
</td>
<td class="nump">128<span></span>
</td>
<td class="nump">18<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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="num">(8)<span></span>
</td>
<td class="num">(389)<span></span>
</td>
<td class="num">(54)<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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">99<span></span>
</td>
<td class="nump">163<span></span>
</td>
<td class="num">(72)<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_us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease', window );">Property and equipment</a></td>
<td class="num">(109)<span></span>
</td>
<td class="num">(680)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis=us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember', window );">Reclassification out of Accumulated Other Comprehensive Income [Member] | Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member] | Interest Rate Swap [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_IncomeTaxExpenseBenefit', window );">Tax (expense) benefit</a></td>
<td class="num">(174)<span></span>
</td>
<td class="num">(10)<span></span>
</td>
<td class="nump">0<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_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">545<span></span>
</td>
<td class="nump">29<span></span>
</td>
<td class="nump">0<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_us-gaap_InterestExpense', window );">Gain on cash flow hedges</a></td>
<td class="nump">$ 719<span></span>
</td>
<td class="nump">$ 39<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CostOfGoodsAndServicesSold">
<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 aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities.</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/disclosureRef<br> -Topic 924<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479941/924-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.2(a),(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-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;">us-gaap_CostOfGoodsAndServicesSold</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncomeTaxExpenseBenefit">
<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>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</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/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482685/740-10-50-10<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479360/740-10-S99-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -SubTopic 20<br> -Topic 740<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482659/740-20-45-2<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -SubTopic 10<br> -Topic 235<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-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;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_InterestExpense">
<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>Amount of the cost of borrowed funds accounted for as interest expense.</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/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-10<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483581/946-220-45-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 835<br> -SubTopic 30<br> -Section 45<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482925/835-30-45-3<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04.9)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (210.5-03(11))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 835<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483013/835-20-50-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;">us-gaap_InterestExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_NetIncomeLoss">
<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 portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482765/220-10-50-6<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480175/815-40-65-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-8<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-9<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-11<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483443/250-10-50-4<br><br>Reference 13: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-10<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483581/946-220-45-7<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483586/944-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-1<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483575/946-220-S99-3<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482689/260-10-45-60B<br><br>Reference 32: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483499/205-20-50-7<br><br>Reference 35: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1A<br><br>Reference 37: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482790/220-10-45-1B<br><br>Reference 38: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-2<br><br>Reference 39: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483589/942-220-S99-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;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherNonoperatingIncomeExpense">
<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>Amount of income (expense) related to nonoperating activities, classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.9)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-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;">us-gaap_OtherNonoperatingIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease">
<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>Amount of increase (decrease) of long-lived, physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.</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;">us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<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>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</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/disclosureRef<br> -Topic 924<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479941/924-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-5<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 42<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-42<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 40<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-40<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-41<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-4<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;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis=us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis=us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_ForeignExchangeForwardMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentRiskAxis=us-gaap_InterestRateSwapMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>105
<FILENAME>R91.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920964669616">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 19 - Segment Information - Information Related to the Operations of the Company's Operating Segments (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">$ 444,355<span></span>
</td>
<td class="nump">$ 457,665<span></span>
</td>
<td class="nump">$ 333,313<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_us-gaap_GrossProfit', window );">Gross profit</a></td>
<td class="nump">77,642<span></span>
</td>
<td class="nump">85,855<span></span>
</td>
<td class="nump">44,254<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_us-gaap_DepreciationAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">15,806<span></span>
</td>
<td class="nump">17,103<span></span>
</td>
<td class="nump">13,624<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_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Capital expenditures</a></td>
<td class="nump">18,291<span></span>
</td>
<td class="nump">22,829<span></span>
</td>
<td class="nump">13,262<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_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">597,881<span></span>
</td>
<td class="nump">601,340<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DepreciationAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">15,241<span></span>
</td>
<td class="nump">16,596<span></span>
</td>
<td class="nump">13,262<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_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Capital expenditures</a></td>
<td class="nump">17,657<span></span>
</td>
<td class="nump">22,136<span></span>
</td>
<td class="nump">12,793<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_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">563,760<span></span>
</td>
<td class="nump">564,444<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Engineered Steel Pressure Pipe [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">296,381<span></span>
</td>
<td class="nump">307,572<span></span>
</td>
<td class="nump">259,823<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_us-gaap_GrossProfit', window );">Gross profit</a></td>
<td class="nump">42,427<span></span>
</td>
<td class="nump">44,473<span></span>
</td>
<td class="nump">31,281<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_us-gaap_DepreciationAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">9,000<span></span>
</td>
<td class="nump">9,789<span></span>
</td>
<td class="nump">9,524<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_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Capital expenditures</a></td>
<td class="nump">11,154<span></span>
</td>
<td class="nump">8,211<span></span>
</td>
<td class="nump">7,538<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_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">307,856<span></span>
</td>
<td class="nump">307,924<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Precast Infrastructure and Engineered Systems [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">147,974<span></span>
</td>
<td class="nump">150,093<span></span>
</td>
<td class="nump">73,490<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_us-gaap_GrossProfit', window );">Gross profit</a></td>
<td class="nump">35,215<span></span>
</td>
<td class="nump">41,382<span></span>
</td>
<td class="nump">12,973<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_us-gaap_DepreciationAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">6,241<span></span>
</td>
<td class="nump">6,807<span></span>
</td>
<td class="nump">3,738<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_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Capital expenditures</a></td>
<td class="nump">6,503<span></span>
</td>
<td class="nump">13,925<span></span>
</td>
<td class="nump">5,255<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_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">255,904<span></span>
</td>
<td class="nump">256,520<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_CorporateNonSegmentMember', window );">Corporate, Non-Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_DepreciationAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">565<span></span>
</td>
<td class="nump">507<span></span>
</td>
<td class="nump">362<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_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Capital expenditures</a></td>
<td class="nump">634<span></span>
</td>
<td class="nump">693<span></span>
</td>
<td class="nump">$ 469<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_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">$ 34,121<span></span>
</td>
<td class="nump">$ 36,896<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Assets">
<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>Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</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/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481203/810-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481231/810-10-45-25<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 6: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481372/852-10-55-10<br><br>Reference 7: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480167/946-830-55-12<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(12))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479440/944-210-S99-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479617/946-210-S99-1<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480566/210-10-S99-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 13: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 14: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 23: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481404/852-10-50-7<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 26: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(11))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479853/942-210-S99-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;">us-gaap_Assets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DepreciationAndAmortization">
<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 current period expense charged against earnings on long-lived, physical assets not used in production, and which are not intended for resale, to allocate or recognize the cost of such assets over their useful lives; or to record the reduction in book value of an intangible asset over the benefit period of such asset; or to reflect consumption during the period of an asset that is not used in production.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-28<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482099/360-10-50-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;">us-gaap_DepreciationAndAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_GrossProfit">
<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>Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147481687/323-10-50-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482907/825-10-50-28<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 6: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1A<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480097/470-10-S99-1B<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 17: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-31<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 19: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.1,2)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147483621/220-10-S99-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;">us-gaap_GrossProfit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment">
<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 cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482740/230-10-45-13<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;">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<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>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</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/disclosureRef<br> -Topic 924<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479941/924-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-5<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-30<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 42<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-42<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 40<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-40<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-22<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-32<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147482810/280-10-50-41<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147479806/606-10-50-4<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;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=nwpx_EngineeredSteelPressurePipeMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=nwpx_EngineeredSteelPressurePipeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=nwpx_PrecastInfrastructureAndEngineeredSystemsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=nwpx_PrecastInfrastructureAndEngineeredSystemsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ConsolidationItemsAxis=us-gaap_CorporateNonSegmentMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidationItemsAxis=us-gaap_CorporateNonSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>106
<FILENAME>R92.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.24.0.1</span><table class="report" border="0" cellspacing="2" id="idm139920964397424">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Schedule II - Valuation and Qualifying Accounts - Valuation and Qualifying Accounts (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2023</div></th>
<th class="th"><div>Dec. 31, 2022</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_AllowanceForCreditLossMember', window );">SEC Schedule, 12-09, Allowance, Credit Loss [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance at Beginning of Period</a></td>
<td class="nump">$ 369<span></span>
</td>
<td class="nump">$ 503<span></span>
</td>
<td class="nump">$ 767<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_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense', window );">Charged to Profit and Loss</a></td>
<td class="nump">189<span></span>
</td>
<td class="nump">442<span></span>
</td>
<td class="nump">653<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_us-gaap_ValuationAllowancesAndReservesDeductions', window );">Deduction from Reserves</a></td>
<td class="num">(437)<span></span>
</td>
<td class="num">(576)<span></span>
</td>
<td class="num">(917)<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_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance at End of Period</a></td>
<td class="nump">121<span></span>
</td>
<td class="nump">369<span></span>
</td>
<td class="nump">503<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember', window );">SEC Schedule, 12-09, Valuation Allowance, Deferred Tax Asset [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance at Beginning of Period</a></td>
<td class="nump">6,051<span></span>
</td>
<td class="nump">5,899<span></span>
</td>
<td class="nump">6,228<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_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense', window );">Charged to Profit and Loss</a></td>
<td class="nump">696<span></span>
</td>
<td class="nump">254<span></span>
</td>
<td class="nump">0<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_us-gaap_ValuationAllowancesAndReservesDeductions', window );">Deduction from Reserves</a></td>
<td class="num">(106)<span></span>
</td>
<td class="num">(102)<span></span>
</td>
<td class="num">(329)<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_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance at End of Period</a></td>
<td class="nump">$ 6,641<span></span>
</td>
<td class="nump">$ 6,051<span></span>
</td>
<td class="nump">$ 5,899<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesBalance">
<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>Amount of valuation and qualifying accounts and reserves.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column B))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-4<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column E))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-4<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;">us-gaap_ValuationAllowancesAndReservesBalance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense">
<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>Amount of increase in valuation and qualifying accounts and reserves from charge to cost and expense.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column C)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-4<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;">us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_ValuationAllowancesAndReservesDeductions">
<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>Amount of decrease in valuation and qualifying accounts and reserves.</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/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column D))<br> -Publisher FASB<br> -URI https://asc.fasb.org//1943274/2147480678/235-10-S99-4<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;">us-gaap_ValuationAllowancesAndReservesDeductions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_AllowanceForCreditLossMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_AllowanceForCreditLossMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember">
<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 );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EXCEL
<SEQUENCE>108
<FILENAME>Financial_Report.xlsx
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 Financial_Report.xlsx
M4$L#!!0    ( %&$95@'04UB@0   +$    0    9&]C4')O<',O87!P+GAM
M;$V./0L",1!$_\IQO;=!P4)B0-!2L+(/>QLOD&1#LD)^OCG!CVX>;QA&WPIG
M*N*I#BV&5(_C(I(/ !47BK9.7:=N')=HI6-Y #OGD<Z,STA)8*O4'J@)I9GF
M3?X.CD:?<@X>K7A.YNJQ<&4GPZ4A!0W_<FW>J=0U[R;UEA_6\#MI7E!+ P04
M    " !1A&58,U@*..\    K @  $0   &1O8U!R;W!S+V-O<F4N>&ULS9+/
M3L,P#(=?!>7>.FT'AZC+96BG(2$Q"<0M2KPMHOFCQ*C=V].6K1."!^ 8^Y?/
MGR6W.@H=$CZG$#&1Q7PWN,YGH>.:G8BB ,CZA$[E<DSXL7D(R2D:G^D(4>D/
M=42H.7\ AZ2,(@43L(@+D<G6:*$3*@KI@C=ZP<?/U,TPHP$[=.@I0U56P.0T
M,9Z'KH4;8((1)I>_"V@6XES]$SMW@%V20[9+JN_[LF_FW+A#!6]/NY=YW<+Z
M3,IK'']E*^@<<<VNDU^;S>-^RV3-ZU7!FX+?[^M*-"M1U>^3ZP^_F[ +QA[L
M/S:^"LH6?MV%_ )02P,$%     @ 481E6)E<G",0!@  G"<  !,   !X;"]T
M:&5M92]T:&5M93$N>&UL[5I;<]HX%'[OK]!X9_9M"\8V@;:T$W-I=MNTF83M
M3A^%$5B-;'EDD81_OT<V$,N6#>V23;J;/ 0LZ?O.14?GZ#AY\^XN8NB&B)3R
M>&#9+]O6N[<OWN!7,B0103 9IZ_PP JE3%ZU6FD PSA]R1,2P]R"BPA+>!3+
MUES@6QHO(];JM-O=5H1I;*$81V1@?5XL:$#05%%:;U\@M.4?,_@5RU2-9:,!
M$U=!)KF(M/+Y;,7\VMX^9<_I.ATR@6XP&U@@?\YOI^1.6HCA5,+$P&IG/U9K
MQ]'22(""R7V4!;I)]J/3%0@R#3LZG5C.=GSVQ.V?C,K:=#1M&N#C\7@XMLO2
MBW <!.!1NY["G?1LOZ1!";2C:=!DV/;:KI&FJHU33]/W?=_KFVB<"HU;3]-K
M=]W3CHG&K=!X#;[Q3X?#KHG&J]!TZVDF)_VN:Z3I%FA"1N/K>A(5M>5 TR
M6'!VULS2 Y9>*?IUE!K9';O=05SP6.XYB1'^QL4$UFG2&98T1G*=D 4. #?$
MT4Q0?*]!MHK@PI+27)#6SRFU4!H(FLB!]4>"(<7<K_WUE[O)I#-ZG7TZSFN4
M?VFK :?MNYO/D_QSZ.2?IY/734+.<+PL"?'[(UMAAR=N.Q-R.AQG0GS/]O:1
MI24RS^_Y"NM./&<?5I:P7<_/Y)Z,<B.[W?98??9/1VXCUZG LR+7E$8D19_(
M+;KD$3BU20TR$S\(G8:8:E < J0),9:AAOBTQJP1X!-]M[X(R-^-B/>K;YH]
M5Z%82=J$^!!&&N*<<^9ST6S[!Z5&T?95O-RCEU@5 9<8WS2J-2S%UGB5P/&M
MG#P=$Q+-E L&08:7)"82J3E^34@3_BNEVOZ<TT#PE"\D^DJ1CVFS(Z=T)LWH
M,QK!1J\;=8=HTCQZ_@7YG#4*')$;'0)G&[-&(81IN_ >KR2.FJW"$2M"/F(9
M-AIRM1:!MG&IA&!:$L;1>$[2M!'\6:PUDSY@R.S-D77.UI$.$9)>-T(^8LZ+
MD!&_'H8X2IKMHG%8!/V>7L-)P>B"RV;]N'Z&U3-L+([W1]072N0/)J<_Z3(T
M!Z.:60F]A%9JGZJ'-#ZH'C(*!?&Y'C[E>G@*-Y;&O%"N@GL!_]':-\*K^(+
M.7\N?<^E[[GT/:'2MS<C?6?!TXM;WD9N6\3[KC':US0N*&-7<LW(QU2ODRG8
M.9_ [/UH/I[Q[?K9)(2OFEDM(Q:02X&S022X_(O*\"K$">AD6R4)RU3393>*
M$IY"&V[I4_5*E=?EK[DHN#Q;Y.FOH70^+,_Y/%_GM,T+,T.W<DOJMI2^M28X
M2O2QS'!.'LL,.V<\DAVV=Z =-?OV77;D(Z4P4Y=#N!I"O@-MNIW<.CB>F)&Y
M"M-2D&_#^>G%>!KB.=D$N7V85VWGV-'1^^?!4;"C[SR6'<>(\J(A[J&&F,_#
M0X=Y>U^89Y7&4#04;6RL)"Q&MV"XU_$L%.!D8"V@!X.O40+R4E5@,5O& RN0
MHGQ,C$7H<.>77%_CT9+CVZ9EM6ZO*7<9;2)2.<)IF!-GJ\K>9;'!51W/55OR
ML+YJ/;053L_^6:W(GPP13A8+$DACE!>F2J+S&5.^YRM)Q%4XOT4SMA*7&+SC
MYL=Q3E.X$G:V#P(RN;LYJ7IE,6>F\M\M# DL6XA9$N)-7>W5YYN<KGHB=OJ7
M=\%@\OUPR4</Y3OG7_1=0ZY^]MWC^FZ3.TA,G'G%$0%T10(CE1P&%A<RY%#N
MDI &$P'-E,E$\ *"9*8<@)CZ"[WR#+DI%<ZM/CE_12R#ADY>TB42%(JP# 4A
M%W+C[^^3:G>,U_HL@6V$5#)DU1?*0XG!/3-R0]A4)?.NVB8+A=OB5,V[&KXF
M8$O#>FZ=+2?_VU[4/;07/4;SHYG@'K.'<YMZN,)%K/]8UA[Y,M\Y<-LZW@->
MYA,L0Z1^P7V*BH 1JV*^NJ]/^26<.[1[\8$@F_S6VZ3VW> ,?-2K6J5D*Q$_
M2P=\'Y(&8XQ;]#1?CQ1BK::QK<;:,0QY@%CS#*%F.-^'19H:,]6+K#F-"F]!
MU4#E/]O4#6CV#30<D05>,9FV-J/D3@H\W/[O#;#"Q([A[8N_ 5!+ P04
M" !1A&5875):O[,'   @,@  &    'AL+W=O<FMS:&5E=',O<VAE970Q+GAM
M;+6;_V_B-AC&_Q6+3=,FM25Q@,*M1>*@W=C=]5BYW>TV[0<W<2%J$C/;Z9?]
M]7OS!4).S@N17.ET)8'W(?Y@.\]CS,63D ]JS;DFSW&4J,O.6NO-FVY7^6L>
M,W4F-CR!9^Z%C)F&0[GJJHWD+,B+XJA+'6?0C5F8=,87^;F%'%^(5$=APA>2
MJ#2.F7QYRR/Q=-EQ.]L3M^%JK;,3W?'%AJWXDNL_-@L)1]V=2A#&/%&A2(CD
M]Y>=B?MFUG.R@OP5GT/^I/8>DZPI=T(\9 ?SX++C9%?$(^[K3(+!GT<^Y5&4
M*<%U_%N*=G;OF17N/]ZJ7^>-A\;<,<6G(OH2!GI]V1EV2,#O61KI6_'T*R\;
MU,_T?!&I_'_R5+RV[W6(GRHMXK(8KB .D^(O>RY![!5 0\T%M"R@WQ2XO88"
MKRSPCBWHE06]G$S1E)S#C&DVOI#BB<CLU:"6/<AAYM70_##)/O>EEO!L"'5Z
M/!-^"A^C)I,D(%>)#O4+F2=%?\H^EU/RQW)&?OS^IXNNAK?+BKI^*?VVD*8-
MTBXE'T2BUPIT Q[4!;IPG;N+I=N+?4M1Q1GWSXCGGA#J4,]P05.\_)K?G1'J
MY>4]0_D,+_\M3>#='=.[UUKC[=![N9YW"/T^[[_?PZO(7/-8_6-"7DCVS)+9
M)/%&;9C/+SLP"R@N'WEG_,-W[L#YV83+IMC,DE@-96^'LH>IC\N..P6:DD4
M-.#/Y!U_,1'$E1S'<>&?-^R;@*&U;8%9$JL!Z^^ ]8\!=LM7H0)DT EO6,Q-
MN'"=&R'U^HDK31;AAI.I.#-A0S7:8K,D5L,VV&$;H,V=P'@-\C%[';&5"1=>
M?\\B9:(\1<O:$K(D5B-TOB-TCK9PFDJ9\PF5#R/Q*V<RF_X)W)R,W0M7.SUU
MZ:GGFHBAA6V)61*K$1ONB W1-NYN R6R!9>A",@UG%8F8KC:]5<3++2F+2Q+
M8C58HQVL42M8>?]J1(5K-9D(M*HM+$MB-5BN4YD[YSA<GUXVQN%WH-YU3M^9
M$.%E;1G94JM#VG/ [G&0)DF20I^ZY1NXJQEIX4):IL;)'2]K3<N26IT6K6C1
MXVB5\Q0VN1^2VMKY1C^/"[0F9TFM3JZR^RYJ@?<&(Q@N%>9V'^EKN%BCD\#K
M6B-[#5?O5K;>/<K77X<1)S=I?,>E$=4!2W]*S]V>8X1EU=#;4JO#JBR]>Y2G
MGR>^D-"K\CQY0I8:!B<1$KQY"ND(0I((S(,55_]X:P1HU=K;4JL#K,R]B[OS
M$N G]DSF 0S4\#[TBU2.]#U<<N2=.OW^^6@X--*S:OMMJ=7I5<;?Q;UZ26\2
M!*"N3K8/2+Z@\3$Q]SE<DCHNN;DB"R8?R")B_S$RD^$CATZ=AIH7UPYIW8C6
M:CZPI59'6R4$%S?UWZ*=9D<PI#^)I\2(%9?[S&"*2!^-'7J*U[8&]QIAP:W2
M@HM;_&_![2;#A12/8>*;.R6N^65BQ&8U-=A2JZ^R5K&!XK;_6VP+H308X[_"
M3>/=XX#B:#@8FI9<IWA=6VZVU.K<JB1!\0"0C\N)Y*P9$R[@#8R3&5[5&M)K
M! A:!0B*N_[W(E_E6(L$\W0'1+S1^0_?#:DS^GE ^V9F5J.#+;4ZLRHZ4-SM
M?PHU.&!Q3USZX]U/9,G]5$)?,X+#E:8BCL'0++7P'T[(ADGRR**4D^^=,[C9
M;K@D:LVD,5G@RJV)OD:RH%6RH'@H@ P6A,F*+%_B.Q$90>("-U\6?QHI68T4
MMM3JE*I(07'3O^UHY.K97[-DQ1N_)C@@=#-9SB:_&WE931"VU.J\J@1!CTH0
M7W@4G3XDX,Y@J#(%,UU YDJE#5,=KGDCC-BL1@=;:G5L572@1T6'SR*"B,ID
M$?BE<4GW@%(#+*MAP)9:'585!NA186#[14NQ@I1/96!NS>O@!Q2_<E/5%*]J
M3>TUD@"MD@ ]*@G,$\UEL=<D6[5D6XQ&:KAB$S6K0<"66GV#0A4$O*."0#X<
MR12RTTI(H^LXH#/Q?0X2(! 48L;="%:C@"VU.KDJ"GBXDR_)+6,61>1MJN!I
M91R;!W0:UWGQNM:T7B,3>%4F\' [7]*ZBKE<95/9+Z"@UY"BX@U+S!T.%VS&
M9C46V%*K8]O;0(2;^?GT^I9,TB#40I*)UAQB>KY>V;0[X8!>TQ=8>%EK:*_A
M_+W*^7NX<=_["CEAB1]"&,V7A?)S5U+F2^5P4RCV)?Z=H33OQ,+?IKD'6@T(
MMM3J,*N X!WUG<-R#8X7':ZX3#,LJ^G EEH=5I4.O*/2P2*]BT(?QJA@1M^!
MJ[3>XV<U*)1J_5PMVU/\.*8#.NA[O:%[T7TTX:E2@'=4"JBO4"RSU0A%/J8:
MYK8DB^Q&9#8-_K14&^PU<C0<4=KK[9I8TGB-).!52<##??MVYK\.94SF,R,8
M7&'0'QD!6'7^MM3JE"KG[^$^?4NI:>7B0/D'H129!"Q6Q36]?[\P(K-J^VVI
MU3?35K:_=\"NE\BRI=KL+FC"=D!B :$T@@%[0CY*2 TFB2DNT7H[K57#W]W;
M4I^YTORG"8KXV9?HQ>[ZW=G=SQ\F^:;_;O7RXK<3'UAF:A6)^#V4.F?G,'O*
MXN<(Q8$6FWR#_IW06L3YPS5G 9?9"^#Y>R'T]B![@]V/0L;_ U!+ P04
M" !1A&582LC/6J$$   _$@  &    'AL+W=O<FMS:&5E=',O<VAE970R+GAM
M;*V876_;-A2&_PJA%4,+I)9(ZC.S#336NO6B6U"OVS4CT;902?1(.L[^_4A)
MD6614E,@N8CU\9ZC\Y"'Y"&79\:_B0.E$CQ592U6SD'*XZWKBNQ *R(6[$AK
M]6;'>$6DNN5[5QPY)7EC5)4N\KS0K4A1.^ME\^R>KY?L),NBIO<<B%-5$?[?
M'2W9>>5 Y_G!EV)_D/J!NUX>R9YNJ?QZO.?JSNV]Y$5%:U&P&G"Z6SD?X&T*
M8VW0*/XNZ%D,KH%&>6#LF[[YE*\<3T=$2YI)[8*HGT>ZH66I/:DX_NV<.OTW
MM>'P^MG[QP9>P3P003>L_*?(Y6'EQ [(Z8Z<2OF%G7^G'5"@_66L%,U_<.ZT
MG@.RDY"LZHQ5!%51M[_DJ6N(@0$,)PQ09X#&!OZ$ >X,\$L-_,[ ;UJF16G:
M(262K)><G0'7:N5-7S2-V5@K_*+6_;Z57+TME)U<;U@M6%GD1-(<;*7Z49TJ
M!6 [\.>1<J([1X#WX.LV!6_?O /B0#@5H*C!7P=V$J3.Q0UX<W6_=*4*3+MW
MLRZ(NS8(-!$$1. SJ^5!@%_KG.;7#EQ%U&.A9ZP[-.LQI=D"8'@#D(>P):#-
MR\V1Q3Q]N3F<H<%])^'&GS_A[P\U_@4IJ;5I6].@,=6C_''M^SX.@J7[. 2V
MR((H#$>RU)1A]0=Q+[L"\'L ?Q9@PX34*34)T9J'P\^&833X; MAD44PAMX(
MPI2A./&"Q X1]!#!+,1OG D!CISM"FEC"(RO1E'HHQ&"J8J#>-Q;J:GR?13X
M=H"P!PAG ;9J=BWJ_0W8TUH-[?(&J.$*2*ZFE4)(/=8?*:!/:DD1U 88FD'A
M*/9'@!85]/!(E9HJ%".$[(!1#QC- G8S5KU7\U'&*BM$9*805CTP@C!5OA_K
ML7P%8:I@Z.$)B+B'B.<AY('R&8#8;+DH'(5O:I)H%+LIP2BV1Y[TD2>SD7^J
M)56+@YS+H<3X['O?2/^-186#<-1)J44%U8QKAX#>947TOH.AFQX\4%55T:XC
M@"1/]IFK<W;5'PF*DA&11>9#'(QG+HL,!C"8Z!@X6.7A2Y@4Q5SG=$ZN)B?D
M16,44P4]Y(T'AT6&0QQ,D* +"?KN6C@].#KCX?J%H!>-)V&+#$/H)V,$4P9A
M@"860WA9SF&[C.+O,@ U8P%U4:D2N"FMK%"SU8'>&=R*(\GHRE&EOZ#\D3KK
MGW]24]$OMLKG5;VEK^7MNB4O=06<+RSNB"@R\%:5GSDK2\)%TZ!-2[ZS-F7K
M+AKFQP+"<7J8*KR XR7,HH(+&$TDQZ7*@/-E1EJ4)UV,_P!48('RC!G(5&$#
M/;6H%%0X 76I/& XF_';=MMP$@I,<?4\("-E=BK;;<:M%6ZVIOGAY']-;^EK
M>;MNU$NU ^?+G4ORM[LR>W*814J2)$;&VU1FQEM4\515"B\%#YRO>(89/T=B
MEBS0\V(#Q2J#:,QBJ9$2HP)R!SOKBO)]<T(AU(Q]JF6[&^V?]J<@'YJ]_^CY
MG3X=:7;L%S?MT<IGPO>%VF.7=*=<>HM(C4#>GE:T-Y(=F_W[ Y.25<WE@9*<
M<BU0[W>,R><;_8'^S&C]/U!+ P04    " !1A&58P\/RK X$  #O$@  &
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
M?Q1B%62<+CHA=Z%"M/=ZT5:0!G+1@C=(+- ))KBS<4+CS.7>AD.\[UX2A]'
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
M@0W^8<T_O)[_LO(>'B -AX,H&NRCM\4%_;!WA-SW_GW-O.O9KZCT2OZ\@];
M-@ONSK?9'(R^8;FB7"%&EI#I=?JPX65YUB@;6N3V<[T0&C[^]C:%\QF1)@">
M+X70VX8Y =0GOLE?4$L#!!0    ( %&$95BQ]N&O[ P  *FQ   8    >&PO
M=V]R:W-H965T<R]S:&5E=#8N>&ULO=UK<^)&%@;@OZ)B4[M)51S3+:Y9VU6)
MT?T.:/?#UG[0@&RT \A!\GBROWXE+,!JB19BWIU*50;LTT\+FCH'I#[F[BW>
M?4Y689@*7S?K;7+?6:7IRZ^WM\EB%6Z"Y)?X)=QFOWF*=YL@S>[NGF^3EUT8
M+/>#-NM;VNT.;C=!M.T\W.U_YNX>[N+7=!UM0W<G)*^;3;#[\_=P';_==TCG
M\(-I]+Q*\Q_</MR]!,_A+$S]%W>7W;L]*LMH$VZ3*-X*N_#IOO,;^=6GXWS
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
M!?*JT=)K11OWZ<!:V,U:GQ5WU/EQA_)XJ*6@'KA$)]<13L"^M1'*G"/O2U)
M,H\CC(*)G!E8##L!8WG/WM0F7UE1QZ0J63*VSQM6>*P_ E"DQN". "UC8%6*
MB%FX 9EEVR49.QZ0![N1Y_Y095NFUB!I0Y8%60*:-UWWN'2X5WY!4Q#3Q#BQ
M7 $ZC*70M ;%(SB<0 8\X ]VX\_(WUD[:FS3BY6B$.#@R/3D"C2V,Q 0=A/0
M?;?S/):T;D<*^K#IA=I99XNLK'-)QC8& ,)N -)[-K B@TYL6L$H,9T 9S*^
MR0N B."IJC%@#W9C3[^L=BOI^<8 RL$^L?;7H([X@354@ [Y/IHB;SP $8XO
M6DS;H[=S%E,G:%V\F%XS6GJM:.,^'6@,NVGLBZAD&]F'M3I=4M_J)52NG#E<
M<P&>"@)BTN,*TD512,RC,DB',8XFDH4,Y$7<!TW?Y.[FK;M]=8XQ8A\,R<6$
MAKXYQV&A'R;F<@()21!,0249 (BX 6@\9NW68,T?85OOLPX@07YD[KI39Z2Q
MDP%UR%FH<XZ/=\ED];XD!21RA8^F5GAR<J/N'8(Y,3*^(_#.GHT S&%M,5>0
M*DC,M1Y2T2D>)0.]$#>]?&>OWDO>;+>B6.NDJWBA[Q!W-YMJ=:3K29)IBN%^
ML:Q5395G2E8W(ONA:4YRG7XX0?5.VXJ]L H^PB8 WJ P,%<E2!8'Q.P9*!@*
M)XY]R4!"Q$U"LLAT:*>+B]CMY/AKOZ EX"@G\LUC8$!EI?'9-$0&&B+GT!"T
MI()6;(:9$^N,"U*9Q]XI&"J>RMJ!A\B9/ 0?,YQM%* 9N25(K!EJZT*4F*L=
MH(J03R:.BLA 1L1]5-0>WROJ:S>_<J[I%VK[],P*-2E!<_81#XFM?+1%86P9
M PZ+"$W(5%H.?$+<?+*:\G/C/?*GO"S5$*I=(Z]R >[VB4T8)#0/(U> "B=V
MA05B1<G4F24=8(6Z8<7ADJO3/Y<_:F,&]4.3QP"5W0LIH!KUPMC> "P4.<']
MX;#?MVL#*[QU7F>%D'M&WA_6**:7R=L^N):+$H1XZH2B2R'^JM'2:T4;]^^
M4=2-43I]]&'^^E"I"2%K>9<QGNQ4=>3 U8(\W+K;M4?DW;E2_A=\4$9M7*)A
M:%9Y0$509*Y9D.KD]O_8^<!=U,U=[SL?;OGW[BN^.91KC2D?$ UNO ^8W.CI
M]R%*P'ZPP2I(D%E" )5DR\@LE8 ,TWAB4T!/GFVBSCGV591Z+IUL^_NG4\[8
M(E,G UX\NZX9+;U6M''/#I!'W9!WO \#'TQZ1P($5UAJDUIHW<\$1(A8#Y4
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
M4_QQ9<@L+0;0^T5-@.._8(/X8^0W_P=02P,$%     @ 481E6"9F*<#_!0
MA T  !D   !X;"]W;W)K<VAE971S+W-H965T,3,N>&ULC5=M4^,X$OXK75EJ
MZZ[*D]A.(($%J@C#['$U ]0&=NOJZCXHMI+HL"6O)!/87[]/2R9D(+#[!:Q6
M=ZM?GG[)\=K8>[>2TM-C76EWTEMYWQP-!JY8R5JXOFFDQLW"V%IX'.URX!HK
M11F$ZFJ0I^G!H!9*]TZ/ ^W&GAZ;UE=*RQM+KJUK89^FLC+KDU[6>R;\HI8K
MSX3!Z7$CEG(F_5US8W$:;+24JI;:*:/)RL5)[RP[FHZ8/S#\JN3:;7T3>S(W
MYIX/E^5)+V6#9"4+SQH$_CW(<UE5K AF_-[I[&V>9,'M[V?M7X+O\&4NG#PW
MU6^J]*N3WJ1'I5R(MO*_F/6_9.?//NLK3.7"7UI'WM%^CXK6>5-WPK"@5CK^
M%X]='+8$)ND[ GDGD >[XT/!RL_"B]-C:]9DF1O:^".X&J1AG-*<E)FWN%60
M\Z=7QDL:TB>:M@Y7SM&YJ>=*"XZ9.QYXO,&<@Z+3-XWZ\G?T93E],]JO'%WH
M4I;?*QC N(V%^;.%T_Q#C9]ET:=AEE">YL,/] TW'@^#ON$''CORAK[ 2UTH
M4=',"R^!-+_3X:ANM%L=%\V1:T0A3WJH"B?M@^R=_OA#=I#^](&QHXVQHX^T
MG^[*"GU6KJB,:ZVD_][*1T_3RA3W_]ME^X?:=]L^[-/T;G9Y=3&;T?GUMRE=
M7IW=7EY?S8[H1MA[Y/5!6:,Y7 C=Q>^M:O@[H:]?S^E:TW7AS5Q:V@\90][\
MRDI)MRM)"U.A"2B])"_FE>PZ@?J#\X'KIK7%"A5&!:"G2FFCNT*7M!#*TH.H
M6DEF$9B%<]([5#4,L+(,7)42<U4IKZ 0]VW-=,<2KXRBLRA]+MPJ2!;\(:$*
M;S .:(_R\81NK2AE8#!XTZ(+%1(LL-U1EB7I<$27^@$"QO*;69Z,QT.ZL;(1
MJB3YB-;IV):-@OR0K]%2K7\*9/D</YHDZ?B KIO@-D)420Z%Y:[RR2P^M6[C
M\_XD&:897O9"+Q4'LKM E:1I2I_E0EJ.B=*%J26"_0@CAJ,QW1K.V>O097F>
M9&E.7[?"=U84IN5 -.(IY"I/TOR0R;:5WT=ZE*0'XS>&;W-T!L?7=R7I8)0,
M#\?TLS'E6E45#?-D/SOL!-Z!Q1X=IDF>CP*R7B*AV>W7@?E+E*PEB@G9-4L-
M.):AT2-GFJ$&Y$GG%2: W :BZZZC<J>"4268$K1POPI7\K'@XGW' W[/EA&C
MR\[U/J!) E<.8X61*\HRJ$8@E(Y#F&7-W&/B0K9L;2@HO%8C\&@* 4W(AC+0
M/,<@AM&%CR@LE"W:VB$^12@ZX6&C<GY3*+L=8BHZ4"/TTXO5NYXK_X^1%3KI
MMF%/4B"&/ ^ S4+67(E=1\]I)AO?D=)(ZO^=9@%D-T:'ESJS_R+MKS.)@EJT
M#,<'Z8[H8D._B_2O:B'I"V?[U]!V_G&I@Q_NG^'3KTSKH!;'\S"E0W>HXMA<
MJ0;-(.VG &EVF$Q0D[&3:%%W[<#S&?[<=XR'R0&X;F !>Y1G(&4HFI2FHKBO
MS)+2_@'Q.=;$6U^A983GNA:PJ21A#7"WL*9^DUH&EP[B-?2487T"P KD&YU+
MQ+T+3(TU95LP&-%6D ^7! ]JH;&U<:Y__&&29^.?'*PJ$0O[1/?:K#^MS#IR
M*H!!LHI@+Y[@CL1%T< V%[/]C"ZTK#;T+@1(.Q%7M\(X'VK58%QSCKH"4^ZU
M0WN T%[:S[ J515HT8"](6+345[CTKT#S&%$9Y@6=UJTJ$)PH7=3V :WAK![
M!==VPXW(42C9YYV7PICE#$<(:V<J50:78L5OP/P<#U2E>EN58.)9?#<[HY5
MGRJZH.'JWT*W_%+T(J7_<.U=['0QHRML_4[P- -R)J-D,LX#K1L<V7XRG@!R
M'.A=7GWGP&*S3N$L..G04K5E,*MZBGF/4Y[SSCX@(XR7ES%?&IBBC7_QXM7I
MY>NM,[O6K<'69HP278;]WU&8;7%)WE W/S'.XF;]PAY_GWP3=JFTPWA;0#3M
MC['1V[CSQX,W3=BSY\:C'X3/%7XF2<L,N%\8;)[=@1_8_/ Z_1-02P,$%
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
M0\VZ%4MZ'5'9 _1_):G?[!?60/_>SOX#4$L#!!0    ( %&$95CU3?G9R@,
M %@(   9    >&PO=V]R:W-H965T<R]S:&5E=#$V+GAM;(U6;6_C-@S^*X17
M##U JVWY)4F7!$C:7A>@EQ:7;(=AV ?55F*CLI1)2M/NUX^2\W:'--B7F*+$
MAP]%BDQ_H_2+J3BW\-8(:09!9>WJ.@Q-4?&&F2NUXA)W%DHWS.)2+T.STIR5
MWJ@1(8VB/&Q8+8-AW^N>]+"OUE;4DC]I,.NF8?I]S(7:#((XV"F^ULO*.D4X
M[*_8DL^X_7WUI'$5[E'*NN'2U$J"YHM!,(JOQZD[[P_\4?.-.9+!1?*LU(M;
M3,I!$#E"7/#".@2&GU=^PX5P0$CCGRUFL'?I#(_E'?IG'SO&\LP,OU'B6UW:
M:A!T RCY@JV%_:HVO_%M/)G#*Y0P_A<V[=DL"Z!8&ZN:K3$R:&K9?MG;]AZ.
M#+K1!P9T:T ][]:19WG++!OVM=J =J<1S0D^5&^-Y&KIDC*S&G=KM+/#J;(<
M<O@%[I4J-[40P&0)$VF97-;/@L/(&&Y-/[3HS)F$Q19XW +3#X!C"E^4M)6!
M.UGR\GN $%GNJ=(=U3$]BWC+BRM(8@(THLD9O&0?>N+QDC.A&[ */M>2R:)F
M F:668XE=SK@%BX]#>=>S[59L8(/ GP>ANM7'@Q__BG.HU_/D$WW9--SZ,/S
MZ8';VA1"F;7F\-><OUD8"U6\_'TJBK-^3D>17\']X^/MM\G# XRFMS"9SD?3
M^\GXX0Y&L]G=?'9]*)]YQ>%&-2LFWZ%B!A]NH306 "QW)]0"+K+L*L-R%L*_
M3.-TF%[>/'.]3['[H3!5KUMUU*H)2&7Q";R?N(8C#6LUA<+^8:QS8)'90@EL
M0[5<PF4M4:/6!B_4?,( M#(&;IC6[VY[5!3K9BVP'+Z_[D:MI74?;>M_F6\L
MK6\"4VRAHP]"N?$O&36:"V]EJGIEX )HAW23&(7+#DGB##XY742R.(>Y9B4'
MR1JL4I=UZ];8.5\,Q)1T:0:7">DD*=KT2-2+X0G98NE"3'+:@4NL/-R*29IW
M8*XLEO<%I)30;N+<Q3&A4<_[0Y91)_V .SW#O><A$"PCW73+/2%)GOX?[I2D
M/4\P(DF2_4B^&WON69K#(R8.Z= >QAM[B]XAGH3T$ 4I=$F'YFTX&:&. J:;
M&ULW/H?L.&/\#6>:<=6@@;.BVE6'="]G@5,"_N0,MV3I2N''&TF=7Q(EOD"S
M@Y@?Q,Y![&Y%I(-#<V$1!R/N1;L83A+;Y^14YPB/NCVF9>EGFJMTK,RV\>^U
M^[$Y:J?%X7@[<[\PO:RE <$7:!I==7!*Z7:.M0NK5GYV/"N+->#%"D<_U^X
M[B\4-M'MPCG8_YD8_@=02P,$%     @ 481E6/?CPAV% @  O@4  !D   !X
M;"]W;W)K<VAE971S+W-H965T,3<N>&UL?53;;MLP#/T5P@/VU,:W]((L,9!+
MB[58BR)-MX=A#XK-V$)MR9/HI/O[2;+C96B:%UND>(X.19'CG52OND D>*M*
MH2=>052/?%^G!59,#V2-PNQLI*H8&5/EOJX5LLR!JM*/@N#2KQ@77C)VOB>5
MC&5#)1?XI$ W5<74GQF6<C?Q0F_O6/*\(.OPDW'-<GQ&>JF?E+'\GB7C%0K-
MI0"%FXDW#4>SH8UW =\Y[O3!&FPF:RE?K7&73;S "L(24[(,S/RV.,>RM$1&
MQN^.T^N/M,##]9[]UN5N<EDSC7-9_N 9%1/OVH,,-ZPI:2EW7['+Y\+RI;+4
M[@N[-C8./$@;3;+JP$9!Q47[9V_=/1P KC\"1!T@<KK;@YS*!2.6C)7<@;+1
MALTN7*H.;<1Q88OR3,KL<H.CY%$2PA6<P[Q1"@7! M<T]LE0VP _[6AF+4WT
M 4T8P8,45&BX$1EF_Q/X1E,O+-H+FT4G&1>8#B .SR *HO@$7]PG&CN^^$2B
M&DC"+1=,I)R5\$R,T#PPTL<2;NF&Q^ELKXQTS5*<>*89-*HM>LGG3^%E\.6$
MV&$O=GB*/?DF17Z^0E6Y<L#/%;X1S$J9OOXZ)O4DV7&I5P.8ORR7-X\K6-S,
M5B-8%0AW@E#Q"FX;D7&1PS17Z"X(,G-3&4R;W+Q(B%Q1(KAGHC&-#%'<5ND,
M'IA*"P@O]O9]4YKM<&\^RBU6:U0=0VRR2UO'OM ML9#T;BMZAS[["/X^4$@(
M!T$ &]FH(ZAC%?,/>JI"E;O)H2&5C:"VO7IO/YRF;4_^"V\GF[F5G L-)6X,
M-!A<77B@VFG1&B1KUZ%K2:;?W;(P Q:5#3#[&VD>;V?8 _J1G?P%4$L#!!0
M   ( %&$95@],!4@@ 0  ,X)   9    >&PO=V]R:W-H965T<R]S:&5E=#$X
M+GAM;'U6VW+;-A#]E1TFDVEG%%TH.W$<6S/R+4TG=C.VVSQT^@"1*PD-"#
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
M\?EBR Z[P^-M^TEW,#[^_T%#&MJ8M6-NF.SE8#28H ?EZSFZJ7!Y: :'*K5
M4M5H^S2R"TX[PHF=/@2)F<&CK'W-;M:H^&[LC0Q=S3WQ6.,8REH&8@IU@;'"
M1:69QZ:T  PU5Y%N-]V2-,W^KZXS%+4G%]R\X$6U#$SF=K$MP1C,L8R*OTN3
MR<(QNV8X@TRM&7F(Q1QD QNB6+L-+8"UC:U,L&5F?+@$(GJF6E%*X(%KKDYS
M=FH7WUI)'"%PB6$Q_-8[7L8VGF/X^R(3XZ)A*!76KAF\*!FPVTE?&,C'&NX7
M?.IW8_["F@$CVN;\8N1L,4VCCDJL>2K,6([75B5VM\#BR) S,&156?.D2G9K
MBQTS_ )[(QDX3?Q'N%^2%IXY'C"QX)CAG;=UN)3T7O*JD4:Q61M8WS'U\@P?
M^<%EE+;:0>+V0%'>A:2'3.VF@R^]&6N-">S1ODM-?^L*6DJ["!=M[AQ@C+?1
M=K:]RY_'*^RS>/PC<"/L JY3(>?8.N@='W;(QLMU_/"F"A?:F?&X'H=ACO\C
MTK( UN<&C=5\L('V'\[T;U!+ P04    " !1A&58FKUSWL@%   Q#0  &0
M 'AL+W=O<FMS:&5E=',O<VAE970R,2YX;6R55]MNVS@0_96!MUND0&I;=II;
M$P-.D[9^:!HD:1>+Q3[0TLCB1A)5DHZ3?OV>(7U-G2SV11>*,W/FS(6CDYFQ
M=ZY@]O10E;4[;17>-\>=CDL+KI1KFX9K?,F-K93'JYUT7&-994&H*CN];G>_
M4RE=MP8G8>W*#D[,U)>ZYBM+;EI5RCZ><6EFIZVDM5BXUI/"RT)G<-*H"=^P
M_]9<6;QUEEHR77'MM*G)<G[:&B;'9WNR/VSXKGGFUIY)/!D;<R<OH^RTU15
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
ME%A>J:B&9]ZMR,MJH,E%<C59@YRV$I1)]'BK81>'8Q>9^D?T!UVZHM 1>L=
MRN:XMU';.=M,<SCK1FPF)MVL ;ZH@0<_ >X/Z X(BT#7-N=\%Z +EANJ@S75
MB\&;B%><=>B@WZ9!;W#P!M[!QO6#A'?PANN!HJ./VBIXJ0Q-HHJ<)-CG< UW
MN!].JN<DE"KC\Q;*([!?<FOX[I?^^][I&V0/-V0/WT(?OAD=NM(A,RY4GNG?
M)_X>Z<*X[.M_^YQX<YO]3O2/.G1Y?W=W^W1W/7Z:T&A\A?OQT^WXT_7X\O9Z
M<D(/SD<CO&Z4GSI/DZID/ZOP8**18+<60>OUVF1=;*X&O?[[K>_C^IUU]+1@
MNK^Z_HMTH,"E\@B)>:;2NZ7.X3*Y)?L@Q49N1DMG*AO13DC;)8>HYTJJO18I
MN,IG3!FT\JBLU %T%,&FSQ2Q#U0ME4VVSBP%?.OINU\^#/K'IV !%]JT6NAL
M00H2SQP*DW-"4VF@C9@*4%9YCQB1V YZIU4IHH1TUS]%$S.,#A*$N%BJ0C(/
M$=46:2A;?]'&J((C-'M$M_(=&KLD#.*]QE[IN$B+M_P!H#RY?A@EQV.C83M=
MO0[.6,7*(]L?N18HT)-'IV'QO$)"&?JMX=\\7SOP.P(" L$53,!1QJPW#B!-
MB)60:<.=S%3Y*SG;I,03C8# "!X+%-R61$%_Q=O7O.A*%1@,- K0+$CN;XB-
M'Z]&&U(PW^OGJR3$7CE']A"=TWHK^W$2##4C\"!F&Q)^32)/) (!ASU=7C]>
M?A[1I!DJ_=YQ!U@>VCF@(I$/ZT1.&2]9C6S_,[6LH_K%TU;:+92$'F6+]@/Y
MG-&IFL4?#!9,/LG=$*$H%JXPN2@9Y%Q8/=-9RO07,QUIRD8SR@ Y@L5UR3!<
MT<6T\B%UMHU:'K>YKC%44ICS#MVX%0!\>Z<\,F4W8*C00CW3"/BB:MAQ"&<%
M*5?A C<44JE.SUH[6Q7L715H+B5LA0V$+B4B35>#)^)UD$I1,260(Z4]<:&#
MG ,@!4:B+U;8Q9.OK)O-VLG4@3#6V:7V;@V-H8UEH;/-<5/5-=>Z5T@6F. :
M8BAM](<B.910C5K5_#S/*U,;[6:Y"[S#68XBJ/U,*F/&\3E9RT.@+5B9N&A#
M42#H$E54-Z/[+*O*!"Z3Z,7L)JVG419?<Q SS[6XJ3U!BL))BTRT/7^KM*_G
M69O0'-74Z+! "'6HTSY'>4-07"J?[^KTDDO(*RUI)W*RES&988G1*6E3,Y+P
M[0UCTXNPVWX)U[UJO6?N8"15<I\<V!URLO@SS['_@W<9LT@?Z*-W!46<$T5V
M^=U-73"7MO2<$HF6RFN1%75N$I+*?@AF9I0N),\J+;(E7W&XC0W=UV/&ZY"&
M4A77O=!YX,A$RIP47>IV$&9:82&J;%=E.3='?+8;0299*(U/S>5-1(E+=TK*
M)W(2# 2ZDM$1%RJF!&[BE8NG4]CFB#X"ANWJT=*TN+3^9:^-XO60>3EDC-)0
MP9F+BRE"L3YWI76?*DQE*X/AAW8&6Z1D7D^TC+WX!JU3'::QAY>Z81&=%.FO
M_4X?)UO,T-2(]N^Z[P35W3KUHK',T]D^B.HVU@?@S=/-WX=1?6I^65[_][A3
M?BXQ,#R#::]S?-0B7Y_GZYOHRG2&GKJ($WFZ1!FC[F0!WL\<0M3<R :;/U7#
M_P%02P,$%     @ 481E6 XM'RY^!0  ! T  !D   !X;"]W;W)K<VAE971S
M+W-H965T,C8N>&ULK5=M;]LV$/XK!S<K'$"S]>J7-#%0IRDV8&V#I.TP#/M
M2V>9B$1J)!TW^_6[HVS9+1P7*_9%YML]?.Z5Y\N--@]VA>C@2UTI>]5;.==<
M#(<V7V$M[$ WJ&AGJ4TM'$U-.;2-05%XH;H:QF$X&M9"JM[LTJ_=FMFE7KM*
M*KPU8-=U+<S3'"N]N>I%O=W"G2Q7CA>&L\M&E'B/[E-S:V@V[% *6:.R4BLP
MN+SJO8XNYBF?]P<^2]S8@S&P)@NM'WCR:W'5"YD05I@[1A#T\XC76%4,1#3^
MWF+VNBM9\'"\0W_K=2==%L+BM:Y^EX5;7?4F/2AP*=:5N].;7W"K3\9XN:ZL
M_\*F/9M.>Y"OK=/U5I@8U%*UO^++U@X' I/P&8%X*Q![WNU%GN4;X<3LTN@-
M&#Y-:#SPJGII(B<5.^7>&=J5).=F[[5#B$;P,]SA(ZHU7@X=P?+F,-]"S%N(
M^!F(*(9W6KF5A1M58/$UP)#X=*3B':EY?!+Q#>8#2*( XC!.3N EG9*)QTM.
M*&G!:7@KE5"Y%!7<.^&0@LO98PJW<.EQ.,Z3"]N('*]ZE @6S2/V9B]?1*/P
MU0FR:4<V/84^V_H!ED;7<$V&-12Y%!5N!=<^'M# GQ_QBX-YI?.'OX[Q/WG#
M<?[1: !W-Y]OWG^ZN8#W5 VLJ,AHBR<H49=&-"M)V%A2*@4^#PJ@I'(K!&(A
M?(;II9_G6Y8!;- @" M+75'R6^A+EM!K*U1ASR_@#Q2F#1H@EV.](-5V;N=/
MS)_H.VPNX).2CB"\2RV<01J'P33._"@)IJ.(1DF4!.-X"M="B4( K:=)" DM
MABE$TR";I/!1.XH,DDK3(,F\?#8.1B,>)724,."#0KB_O>V4I+*2Z[7B^ZE"
M0A3^%$ 4TX=4Y($WBL=5G19\D WU1.I;P._J3Z#?M8_!1\F%T@+9.-]%#5HG
M:V\5\C/5*;J(MH6B;TXEW"+T"VQ'Y[S#FNUY$O7^632(SJGP5)5W?/\L'(P.
MYJSE63P(=RO_6;<WTHJR)$]V(;2+_X^$T@:.5"4XL:@0BOUIKU-[DJ+"8*Y+
M"@./\4A7D=X(Q$4X$-!HJ1SKQZL!1R13O-9U(]03++"2A$26<S2VCHIZ(W-G
M846)RP>5<&O#<C5[.F 4HM0JOU8Y&D>/GWMB\M+M:?%V+NP*EC[X!>?"<DFO
M$9F$*!-CI6L*XR5Y2IL?SHX/G;IG$$]'03+Q\1Z.@VP<\UHV#28D<7MH!(C2
M<3 =4^AG81!.$QA30DS#@U0[G09=77IM+9+.K&NW]IL4"UF1,PB&O5A(4ML@
M68KLZS:(;=W@QH)=Z^U4:<OCA:BH0+>Q=^"CER\F<31^9?>1+?;W=FO5P;V-
MH< WLGK:1KYMZRECMNY[CM6W-S9H?.O#Y_BV!0>Z*NW@FP"51&;7VG25<"54
MB5^GY);XM\Y^QL/SUAY4<:G6*6\NPN;D(F=$<12,QQ,>D;>C<=CESC8=_MGF
M>_'HZ9/DCCU%2A1,Z.5.PA'Y/X/Y;J,?3\G%V0C.>9@&6<C##Z2.@7A" D$8
M3?>\*,._8A0&&743>VX_9J1#3_XOEAH':<:TXF!$ IVR1'<29;P]BB;'K->/
M1L&4G@8V!J5 TIDBHG$_HGO/G[,%&2#-POWE<Y$_5+KL?@WZQY<Z$&^&;>0S
M@$'NIEF#P^#3BTJV5=)2U2F(@Y6EPGW\MP\+E_ -E4=#!ET:89U9YUR^P#K$
M"AK9("6'+M8[@0T]I:NN:$E[J'Y72@>4Z$SMJ/%3_F1PK/<9'G2F]%J6OO_F
M-*9"VC:IW6K7XK]N.]O]\?;_P3MAR+$6*ER2:#@89STP;<_=3IQN?)^[T(Z>
M9C]<T=\4-'R ]I>:VL#MA"_H_OC,_@502P,$%     @ 481E6."V:\8F!P
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
M)!@E8R3?+T5YD$URBI(@SF-0S8!;?,#)D/:,A;&ZCA0JXS#GEU$0A9Q-J.7
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
M:B.5+%7H/.80OI@?V)@ XE-"3(&/S'X4];I7:N2 !7-KJGPFA6.:A8#L>CJ
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
MV7;QV"6()<T8LH"*QI60&ZY9+V%3_D!!.O&7R ?C,UY1COWLQ7@_^Y,W;5=
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
M<)3,.H&ZT5GA5&8$$9%[,X2-=S"+0\:&T(/,T0&9HS<C\^(E+=>B$A;//M&
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
M1C3>@/97FDI,._$!NM]V_A-02P,$%     @ 481E6)!IG7.M @  NP4  !D
M  !X;"]W;W)K<VAE971S+W-H965T,SDN>&UL?51M3]LP$/XKIVR:B@3DI:6T
M71N)CFT@#50!VS1-^^ FU\;"L8/MD/+O=W9*UDFE7_QZ]]QS9S\W;91^- 6B
MA4TII)D%A;75) Q-5F#)S*FJ4-+-2NF26=KJ=6@JC2SW3J4(DR@:AB7C,DBG
M_FRATZFJK> 2%QI,799,O\Q1J&86Q,'KP1U?%]8=A.FT8FN\1_N]6FC:A1U*
MSDN4ABL)&E>SX"*>S ?.WAO\X-B8G36X3)9*/;K-=3X+(D<(!6;6(3":GO$3
M"N& B,;3%C/H0CK'W?4K^A>?.^6R9 8_*?&3Y[:8!:, <ERQ6M@[U5SA-I\S
MAY<I8?P(36L[/ L@JXU5Y=:9&)1<MC/;;.NPXS"*WG!(M@Z)Y]T&\BPOF67I
M5*L&M+,F-+?PJ7IO(L>E>Y1[J^F6DY]-;Y5%B&,X@4O4_)FY&L&U-%;75'IK
M@,D<KC!?<[F&"U=";CD:Z#VPI4!S- TML7!88;:-.&\C)F]$C!.X4=(6!C[+
M'//_ 4*BW^60O.8P3PXB7F)V"OWX&)(HZ1_ ZW<UZ7N\_H&:&&@3W)=?ZSW8
M[^U4-#$5RW 6D$P,ZF<,T@_OXF'T\0"W0<=M< @]W?]*Q_"5] >];\J8(_CM
MJ<,#;BS,A<H>_^S+XF"<_5G\0J;;5Z/?DF&Y1-W5W0V)&V(@N9 8)'U?K5%F
M+T"]HV$ZAXS>79,.S01NJ=\81@6&]] [CT9P1(OA,*)Q# M-34?;%__Y\*GF
ME<L2>G$T)KO><!31=$(%L$C<+&A&G]@TK"+@[A WU+@,PGD\AOZ8S!^49<*%
M&[?1Z-P%V_<HX8Z@2M1KWS8,\:^E;;75G7:=Z:(5Y#_SMJW=,$W:,2!P1:[1
MZ3DU MVVBG9C5>7EN526Q.Z7!757U,Z [E>*ON-VXP)T_3K]"U!+ P04
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
M3P[*$Y W,+-.%40T)0%R O4:\I?/B-S+)T=FE2X>_MZ7W$'W^Y/[4PK3%I-
M*60]EZ8O!PX<!T8^-LJ!R)T3"._WA*=!QB*81#3@*8,)BP)*:1\P"Z(DAI&F
M.8PLSLB]=J)"U1PT<E1E01A35(V]P &$XQ[A^&B$KW2]UHULG!W@#0B3MT^P
MZ%E)QC/9R(5R)T>B>]#U-Z%[M3$& CTC[V0IC4<I 7Q3>&9!%(6(6L#CI,4?
M\(P9HLJ3"!&&<8<ZS^![GA'.P@[OHC5-5)N_@_QEEW\6)#PF>9#3F(1!'(80
MXT*">/D2R#B!EC\A8XYCG(:["')0B2@91^#\I'<_9KWL.(6A#:'LK.Z+83S?
MU6 <L0Q4>)X01GFGND<#(>$4H6% /8K4"X,DC _1)^GIDQQ-G[>+A?2;RI Z
MMYC\K2QT4ZA*";_U'$>>PXZ/Y,GUUW (1Q9=K2R49N.T>28&PT0.L2CS@"59
MZ'%BV:Z"G7Y &C@;0+H[(T/$/0(DC[COYI#$44JN5J)92A CCZ+:M B("G9_
MT110SI!B[5L:1$B!#QJSV@"2"%+GU1(>IR <HUS(!@SRD9<*/"-K%03$@)=Y
M"L6.R&51F(WGD8/?%N)NR ;<&@?GDV'D:VT51@9^L$4H4&K7.PL#@:Z4;04Y
MK#^,49)S\KM; >@<F@T(W'(^AW$/Y*\R\(4R@UA\1CP[I>0'L'Z:M@]X.\#7
MM.=K>C1?=[WK>7IIK81U#W>0WY28 U>= M2/H^IAGZ_P\\V>)A<^BK.^;K)>
M5_I9XJ[GF]YZY"AT/#XS6$^NFT<HNS88;)A1@OO#O1&EA"-B(=4CAM]2-@XY
M":%"'Y"^:Z"N4\V25-I:4@ACGF%;W0I3@ID@ C$>Y%'DH2D@2.7^(\2#-$UA
MS(#E5W# ,7">[,)OW>5A!%M=V+&$!7G,_>8&[(*NHLBB((/_G_8U11(DD6^)
M)* Q3I(@BG,2!VF\'[CJI69GY,9@?N[95U-^WJAUC0OZ&!QG<=MNL'K[V77C
MH#M]I[7!DW%&6Y$@9$CG7[0NMZJJ\ OS:_<X@?8X 2]R+53YTJ$@P%G:ZO+,
M=RI+ ^J[=<R2($W0,,*_;WT?9 #%'4.CQ"DV%<X!-XI+_66M-[@["S@ ^2VS
M<=X( 8RQ"E97JA3X;28JC^0=GH1!P9*%1G@!G==Y%^"G:E.V-MO"=:@ W5(\
M>(1YM,^ SYX&N/"=^'@CRK\MUP.]GO6]GAW=ZQ\;: >];-0_7;_/=@UU"[C@
M8HJT/K+=#[K]QD/C(,P!8+OV#V"V5$V#G0M9/:-5.!8&$<"'SS!)VF>,*P,T
MKD!B0M,.%G@G'B2N_< @!3_0QA>K_O_'(*&MAM[3,/DJBGWUFPSN9;4T2W_[
MA-4'2=U>T?JO_07WLKW7O8BWM^/WP@ .EE1R :KT-(6CIFEOG.V+TVM_RYMK
M!W=&/UW!)5T:%(#_"PW7GNX%'?37_NF_4$L#!!0    ( %&$95CRDP?G3P4
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
M0"2FL?B@8G[<!^#]NP_@': I>-BR3*@H,7.E:K"NU@W+QMT4C4,G&O<ME)?
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
M48XN.EID>0DX$-JX<]X<FQ(>I5U@YH?"E(%%QU:5Y9^"SA]02P,$%     @
M481E6(0LC[X[ @  L 0  !D   !X;"]W;W)K<VAE971S+W-H965T-3(N>&UL
MA53=3]LP$/]73A$/(#&2IF54*(U$6Z9-@JFB8WN8]N FU\;"'\%V6O;?[^R$
MK-M:]I+XXWX?9]\YVVGS9"M$!R]2*#N)*N?JZSBV1862V0M=HZ*=M3:2.9J:
M36QK@ZP,("GB-$G>QY)Q%>596%N8/-.-$USAPH!MI&3FYQ2%WDVB0?2Z\, W
ME?,+<9[5;(-+=(_UPM L[EE*+E%9KA487$^BF\'U=.3C0\!7CCN[-P:?R4KK
M)S_Y5$ZBQ!M"@87S#(Q^6YRA$)Z(;#QWG%$OZ8'[XU?V#R%WRF7%+,ZT^,9+
M5TVB<00EKEDCW(/>?<0NGTO/5VAAPQ=V76P20=%8IV4')@>2J_;/7KISV .D
MZ1% V@'2X+L5"B[GS+$\,WH'QD<3FQ^$5 .:S''E+V7I#.URPKG\LW8(0W@'
MT\;2EK4PTW+%%?-G9FE]832$_&'9WAN<SM$Q+NR9WV7F"6[5EANMZ*H<$W#[
MW/#:C\_A[FX&W^]1KM#\@!/@"KY4NK%,E3:+';GW'N*B<SIMG:9'G Y2N-?*
M59;T2BS_)(@I[3[W]#7W:?HFXQR+"Q@.SB%-T@$\+N=P>G+V!N^P/]-AX!T=
M.U/J)<L$'DRRA5X&J.^8;3X<C\97:19O#TB.>LG1?R6Y*K3$0YJC?S0'EU?C
MY"_)>*^*))I-Z!4+A6Z4:PNJ7^W;\::MPM_A;2_?,[/A5#X"UP1-+JY(V[3]
MT4Z<KD--KK2C"@_#BIX4-#Z ]M>:ZK*;>('^D<I_ 5!+ P04    " !1A&58
M;Y=<%W<"  "*!@  &0   'AL+W=O<FMS:&5E=',O<VAE970U,RYX;6R-E5%O
MFS 0Q[^*A?;02FO!A)"D(DAKHFI]V%0U[?KLPB58-3:SG=!]^YV!HC0A45_
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
MVWS-V08T2X'^N8/\$?B_)JJ]6/HU="76)(6QI=:A +X!:_+[;SAT_C!M[8'
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
MSPJ&>91N%"B5'[>#XOJ>TT-1!AN)XC0HSBF4J4Y-' D$!L68.@!1AAH),FU
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
M2$)D#IG^C25D@I>0U<DI;'*Z5KY2CJRR.1Y>)N=!'(_<E^W5Z #YX6 7-.L
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
M5FF^ERH_$&R3[<QY8D*P./L84.+35!60WS\S)EX/5 7ECK;%/U!+ P04
M" !1A&58H(P:B&D#  !G#   &0   'AL+W=O<FMS:&5E=',O<VAE970V.2YX
M;6RU5]MNVS@0_96!MEBDP":ZV)'MK&T@L=)M@*8(XG;WH=@'1AI+1"72)6D[
M7>S'=R@IBBU?D*+.BTU29PYYAD?D:+B2ZJO.$ T\%KG0(R<S9G[ANCK.L&#Z
M3,Y1T).95 4SU%6IJ^<*65(&%;D;>%[H%HP+9SPLQ^[4>"@7)N<"[Q3H15$P
M]?T*<[D:.;[S-'#/T\S8 7<\G+,4IV@^S^\4]=R&)>$%"LVE (6SD7/I7T0#
MBR\!?W-<Z;4V6"4/4GZUG9MDY'AV09AC;"P#H[\E3C#/+1$MXUO-Z313VL#U
M]A/[NU([:7E@&B<R_X<G)ALY?0<2G+%%;N[EZCW6>LXM7RQS7?["JL9Z#L0+
M;611!],*"BZJ?_98YV$MP _W! 1U0- .Z.X)Z-0!G9<&=.N ;IF92DJ9AX@9
M-AXJN0)ET<1F&V4RRVB2SX7=]JE1])13G!E_E ;!]^$4(E1\R>PNP(W01BUH
M<XT&)A)XCTG*10J7=I.XX:@)/ZV, G(&?Y&]-)Q\D%JC?@LG$1K&<VJ= O$3
ML^:I8 838+HA>YX$OMQB\8#J7\)_GD9P\N8MO $NX%,F%YH6H(>N(:UVQ6Y<
MZ[JJ= 5[=/D!W$IA,@W7(L%DD\"E)#69"IXR=14<9(PP/H.._P<$7M#9L:#)
MR\.#'>'1R\/] VHZS;YW2K[N'KYZR_)ZRQ3&,A7\/]HB>AF3Q@H[,U\QGY?,
M]EA9CD\'_:&[7$_&-L8?;$*B;<@S8D-3M]'4/:B)#@)ZS05</\89$RD"#:R8
M2I[]]3],64[N?1K8I>[@'/84OM!S%N/(H6-6HUJB,_[]-S_T_MSEB6.214<B
MV\CM>9/;\U?S2\4<KONEY[4-LPT*0Z_EF&W,'L>$C:KPEQUSI^B.5>9[>1)>
M?UOP^<:9M4OPP4E_UD+')(N.1+:1[%Z3[-ZK6:BW;2'?:QTHDQV@L-_VT#;(
MV^VA?B.K?U#6C3!(R3)P3S<<3%=LONZ>YNGU(U5J&@_ZYN!$/^N;8Y)%1R+;
M2/"@2?#@U7PSV+IC>NU[:+*-Z;2OJFU(VS3N6@E6H$K+4E9#+!?"5#5&,]I4
MRY=ED=@:OZ(JNBIZGVFJ$OR6J=1F(L<947IG/5J/JLK:JF/DO"ST'J2ALK%L
M9O0E@,H"Z/E,4K%7=^P$S;?%^ =02P,$%     @ 481E6#<<O;:J!   $!X
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
M]NZX3Q3BOC;Z!?"$*F/#B@@H*'Y6'R, <'I/F"P5*!$TQX(@#P<,?<)ADD:
M2QJ&F'&T 5@5#;Z#C3<OU]8NH73BPZ)#CSIN-6NJ$>M9G<&H$IMG8J.B6*]3
MJ2-Y>F._ELP\\[?UJ?\_1^:G-(0OD%D@#)BI)63XPH1NQZW2\5+(J0HM:H1J
MN/@>*;^=Y_RV/NFOM7%.0[N0"#V;_M$/$U4;2\W<!@ZY #F!GB [NB(^O8N#
M/PF(3B.: -XN0Z<CZQ?-4S6ST6*!433/%%J9N+Q>8.L+!LV)VTE3ZANJ0IHU
MIY_Y?B>8U6>S^J'9T -F:( B]?VN]J@S6;=8&$7S3*&5OU'F%0[G@ K'OW+4
M[2EBG.X9^!>[-D9R:DH?/=<=5XZNN1Z]Z9(PBN:90BLOB;STX>A+'[7Q*&RK
M\X 17X#;ZF)4/7;3&-4HVL(HFF<*K<Q27O5P]%6/_V^,FDV\%*..._UJC%HC
M!C'JL%\)B^K%QI7HR=-;^[5LYL441U],^<]NPS.GYLI$?VQ50]0Z,;LWLJIL
MU(@Y ZM:SM=;Z[5LR'I)N25/Y1U]*@^GS<V:H#BMSM-5^J5V&7 _I#R-^<4Z
MX$C@VY @^3$ "V@AT*"J^*&JXH.>;5D_=NH&V2U<HHH(*,GK;ASY,J9-[VEL
M6[=7ZD[51;)*^\P^\NR:]JGC'BT<M_9-']ZH&V#=O.OT;M\YC#^(.4Q@!<.0
M_M5"++TNESX(NE'7NVZI$#12/]<$+PF3 O!^1:EX?I =;"\M3OX&4$L#!!0
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
M&'@"V@]P[X=*V><;[Z#\.Z#_/U!+ P04    " !1A&58/3#^R9D"  #P!@
M&0   'AL+W=O<FMS:&5E=',O<VAE970X,BYX;6R-55U/VS 4_2M6Q -(@\3Y
M: &ED6BS:4AC0Q2V9S>Y;2P2.[,=VOW[V4X(_4@K7AI?^YSK<^S>ZWC-Q:LL
M !3:5"63$Z=0JKYU79D54!%YQ6M@>F7)1464#L7*E;4 DEM25;J^YXW<BE#F
M)+&=>Q1)S!M54@:/ LFFJHCX-X62KR<.=MXGGNBJ4&;"3>*:K& .ZJ5^%#IR
M^RPYK8!)RAD2L)PX=_@VC0S> GY36,NM,3).%IR_FN ^GSB>$00E9,ID(/KS
M!C,H2Y-(R_C;Y73Z+0UQ>_R>_9OUKKTLB(09+__07!43Y]I!.2Q)4ZHGOOX.
MG1\K,..EM+]HW6$]!V6-5+SJR%I!15G[)9ON'+8(>'2$X'<$?Y\0'B$$'2'X
M+"'L"*$]F=:*/8>4*)+$@J^1,&B=S0SL85JVMD^9N?:Y$GJ5:IY*?G(%"(_1
M);IG&:\ /9,-R(_P_ >7\@(M!:_0C#-%64/9"OVJ01!S<1*=IZ (+37H$KW,
M4W1^=H'.$&7HN>"-)"R7L:NT4K.?FW6JIJTJ_X@J[*,'O5DAT5>60[Z;P-46
M>Y_^N\^I?S)C"MD5"O 7Y'M^,"!H]GFZ/T!//T_')]P$_:T%-E]X)-\+HPIR
M-%=$P>#QMO3(TDWEOR7^^!J'L?NV[?D0%7K^&.^BTD,4#CW/ZU$[#L+>07C2
M@2Y:79)L2'M+'.WL-XKVI ^ O/'-GO(!$(ZNAX5'O?#HI/"N+A:@6R[HO[F-
ME"F:(2_1X3W<^/LZ9X>H$ >1M^?F$(6C0SON5B^H0*QL3Y4HXPU3;;GTLWW;
MOK/=:F]^JMMYVWT_TK1OP0,1*ZHKOX2E3NE=C;4FT?;7-E"\MAUGP97N7W98
MZ"<)A 'H]2777:<+S ;](Y?\!U!+ P04    " !1A&58"T#!BF0#  ","P
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
MMH""ZDTE"%,4USZ.Y737Q,ZFV4\U:P<U\[B)$C_&:L!8S6+<Y+EH2:$WEM(
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
M7[]K)V1I22NDO32^]CG']_BZU[.=D$^J!-#DI:ZXFCNEULVUZZJTA)JJ*]$
MQY5<R)IJ#&7AJD8"S2RIKMS \V*WIHP[BYF=NY.+F=CJBG&XDT1MZYK*UR54
M8C=W?.=MXIX5I383[F+6T +6H!^;.XF1VZMDK :NF.!$0CYW;OSK9&+P%O"3
MP4X-QL0XV0CQ9(+;;.YX)B&H(-5&@>+G&590548(T_C=:3K]EH8X'+^I?[7>
MT<N&*EB)ZA?+=#EW/CLD@YQN*WTO=M^@\V,33$6E["_9=5C/(>E6:5%W9,R@
M9KS]TI?N' 8$/SY""#I"<$B(CA#"CA!^E!!UA,B>3&O%GD-"-5W,I-@1:="H
M9@;V,"T;[3-NRK[6$E<9\O3BA]! _"GY1&YY*FH@#_0%%(;K]AX0D9-527F!
MDXR31RXA%05G?R S4+($#CG3BIPGH"FKU 5R']<).3^[(&>&\E"*K:(\4S-7
M8\)F6S?MDENVR05'DO,#\EUP72KRA6>0[0NXZ+2W&[S9708G%1-(KTCH7Y+
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
M0 \?29G0./<7T)@5?\&AQ%H#$.P9ITEI+")(HO3X'S^71)P80/<5 U0:(-G
M><7 +@WLM@9.:> 4S!Q3*7CP,<?S648/(,O1PEM^4)!96(OTHS0?]T>>B;N1
ML./S3Y03 #TP!#=!L$_V,>8D!)_YEF1@21,QE[;Y(#\1\ ME3,#RBS0E*6>
MKML9G?F$XRAFY\+\RZ,/SMZ=@W<@2L&O6[IG. W9;,1%+GE$HZ",>W&,&[T2
M-T3@CJ9\R\#[-"1AT\%(D% Q@5Z86""C1Y\$E\"&%P!9R-8$M&QOCC3F?GMS
M:,C&KL;5+OPYK_A;X!BG =$1>S0<%X9Y67B:V]!#$V<V>CI-5X4AS[8]NPGS
M-3!WZB*W@C7"=ZKP'6/XGT3%"_99)N89V)$LHB' X5]B.23%S..TG&U!8[9%
MJ3C7YGQ\FGL2Y1!.H)2Q"O*F<KHJ!GJ./M=QE>NXS5"Q"R F 4E6(BW#/%J,
ME0ALQ[)=2TI& ].,LJ_"I%%NI.16*;G&E$[+@D_6XFX(%B051QS<BVP9N*E&
M$]QPGD6K/<>KF.0C>X^+8?_CKN#B3QT'QJ?GK?**[7! K@=B<C"2/9'!_,<?
MH&O]I%O7?3KS>W+68'U2L3[INN8GFOD_MI$T9W0HQYM(4\881,<4O2I%SYCB
MZZL>G,6BUYR#%1%BB A)$L28L6@=!3@7&-H6XZEKQ/8D3E2,(]4-WQAR1T*F
M%2%3\TI+Z#ZOB'6^8JFM,YHT6C/5T);3I2-EJE8XB1(5,?1<B1-CU!TY@58M
M:JS_M7V4CVO.E*E$BP8T=,82+^; NQ)SHO9@G[VF]-:L"%!NBDLM3"DOOA9V
M6E^:2:$Z*=2ZV_PL7G7 62X[SR^ F 878(G9%GP0[S?@(PDWY$+N+^ ?(-X@
MQ/M!"MX_!UN<;DA^X8"ST-B#S$%];Q/JU9O?E[?F@-3:$W86GZ7EZ1R8RLI3
M@QG"J;*2C#%TS;$6J-"L4/OM1% G4.%8)D:'LBR9&&/@78FIU2PTR]G^.Q)4
M1:K<I340VYO*Q!@#[TI,K8FA613WWI1<W6R8R,RH**0R\Q:R%=:Z%;82KJV[
MDDZG*CU)!<F%QM<Z.BDTS71JC0K-(O4_]Z/;E!/!,P</P@=X/."=N1/U)$!+
MXOKTYO?EK3D4M3J&9GELZD2JC'4=1=.I(*7<OH741;7416:IVV\?0JJ&A8[\
MFJ@!N1.I(OOFL+O24@M=9!:Z_7<AI%&O8UG?+W4H))=;<^Q=N:GU,C+KY;X;
M4?FXYHN/)1=D#4I9;[XY\J[,U,(5M1*N;1L14H4J<EPY;Q6DR5L%6?HVA&J%
MBLP*]>;S\K;+QS6SV^]M)[UZ\_ORUJ2TUK:HU:=:+6NJ AU.9*&UU*&@Z\EO
MREJ8Y[[R41W5$A29)6C/S4*5EK:K%$05Y$)E^K^%_D2U_D1F_?D&S4*C+,>V
M4AI4E/J%WAQ[5VYJ,8O,8K;W9J%^4-5LQ6A0ZEZ,.?*NS-3:$K72EJV;Q539
M*1M.E6T;'4HI([X.U2@CQY1&)_O""<DVQ?XZ$T,E9OMQ8[2Z6NWAWQ0[U]+U
M!;SRCSOQM9OC#P/N<+:)4@9BLA8NK<N)B"D[[K4?3SC=%;O/*\HY38K#+<$A
MR7* N+^FE+^<Y ^H?O$P_Q=02P,$%     @ 481E6/7*B09>!0  9AD  !D
M  !X;"]W;W)K<VAE971S+W-H965T.3 N>&ULQ5E=;]LV%/TKA%<,"1#7(O7I
M+#&06/T(L'9!TFX/PQYHB;:U2J(KTG$*[,>/E!7))BG&6;TM#[%$GWMT#TE=
M'M(7&UI]84M".'@L\I)=#I:<K\Y'(Y8L28'9:[HBI?AF3JL"<W%;+49L51&<
MUD%%/D*.$XP*G)6#R47==EM-+NB:YUE);BO UD6!JV_7)*>;RP$</#7<98LE
MEPVCR<4*+\@]X9]7MY6X&[4L:5:0DF6T!!697PZNX'F,/!E0(W[-R(;M7 ,I
M94;I%WESDUX.')D1R4G")046'P]D2O)<,HD\OC:D@_:9,G#W^HG];2U>B)EA
M1J8T_RU+^?)R$ U 2N9XG?,[NGE/&D&^Y$MHSNK_8--@G0%(UHS3H@D6&119
MN?W$CTU'[ 3 H"< -0%(#?!Z MPFP#TTP&L"ZJX>;:74_1!CCB<7%=V 2J(%
MF[RH.[..%O*S4H[[/:_$MYF(XY./E!, (S $5TFR+M8YYB0%O_ EJ<"4%F(N
M+>4@/Q#P,V5,P.Y(DF/&LGF6X'KDZ/RPT).8<)SE[%20?+Z/P<FK4_ *9"7X
MM*1KALN478RX4"3S&B5-]M?;[%%/]A"!#[3D2P;>E"E)]PE&HBO:_D!/_7&-
MK(PQ25X#%YX!Y"#7D-#T\'!D"(\/#X<6-6X[NF[-Y_7P32GC<H 8SHFQ>[?A
M?ATN2\3#Q V"$ KE#[NB#; 01M#9A\4Z#$5CQQ^WL#T17BO"LXKX2,LA(]5#
MEA"0"$$F'5N&8/?)8:"(T#'C4!&@0UP4F;/WV^Q]:_:?\",X(8^B3C-R"F:D
M)//,*,'7GCV,D*-D.#6@H(,<J @QP-S ]<U2@E9*8!\(L0QE94(+8LH_T(<
M.B%2\M=1+H3>6$E?1T'H(]><?MBF'SZ;?N^+$&I/]#S/]7TE?0/,#X- @<4Z
MS!5_L$= U J(K +>B64<B(J;8+8$<[%B@R5)%V8]D9YHI*G10:X?1(H6'01%
M=3(K&;=*QE8E^B*RYH<L)#?U[ ._?R#%C%1_F(1;'RQ=U#E;X81<#@2MK"ID
M,/GQ!Q@X/YF*_3')XB.1[74X=+IUWOF.E[<)WAUEWU4+J $T1*&GS!<#"GGF
MZ0)W7 K\+R8,^&LO(A:UN!2?U]NJ#&YS7#)PE?XI?)?PMAQ<<5YELS7'LYP
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
MZ405?IZJP@8I! YHZ6Y23(ZOJA #S,9PTBM]%IVRPA-+*ZSKH="RM.PWH/Q
M520FE#LDK7"GK? TX@H;%!'&KJ-RT6$!8*QRT5&^:P<#7#IYA9^GK["NG&0:
M!*ZJ=<VX$+1R_'](+-QI+/QDD27+L:R^ZYA77]=,_K+#NAS;:MJ>5NJO7)!L
M7)V-A_'HZCRI/IO*6W\(.H6&QR7:>'4V:"C'#WTM9TRZS;)"K:SI.-]V0LN<
M-M!I,AC79-\JSJ"K)]L%K'ZV&V .M@-UC3' ,(3^P!(#G1:#<2WVZ.(,NNCR
M=+5L0@66KY+24;8_5-"@$UPP+K@>6IP;-[T@7?7C?&5 83L$=5?" '/A9.^B
MSZ43,C N9+Y5G,&D/=S04K/%B/-<4#]_Q\-Y8F6 3O' N.)9459069[):_2!
MYF^.>YUC=7;<XV/K[*3>HJF\]7NS4UXPL?("72VYZ@[BR@324UL'V4/?P=#)
M+IA&=H&NE#Q;2PD#2%L]&E!O6]4+!WATD@N>)[D:\]XNK8-!J[(&F!=HFQ+C
MP3QV%LY/#C$RPG;581!':WK(1;U_W[:V!T[OJF,6I?T"GT7UL5'GIC[%NHR9
ME%H<I60K75IO?<F0U0=#]8V@1754<DN%H%EUN2?QAK 2()]O*17'F_(%[?'<
M\C]02P,$%     @ 481E6,;O'"RS P  Y0T  !D   !X;"]W;W)K<VAE971S
M+W-H965T.3(N>&ULK5=MCZ,V$/XK%CU5=]+N N8E89M$2L)57:DKI;MWUP]5
M/WAA".@ I[;9[/W[VD!8WH)R4KXDV#SS>)[Q>!@OCI1]YS& 0&]9FO.E%@MQ
MN-=U'L20$7Y'#Y#+-Q%E&1%RR/8Z/S @86F4I3HV#%?/2))KJT4YMV.K!2U$
MFN2P8X@764;8CPVD]+C43.TT\93L8Z$F]-7B0/;P#.+K8<?D2&]8PB2#G"<T
M1PRBI;8V[WT3*X,2\2V!(V\](R7EA=+O:O 0+C5#>00I!$)1$/GW"EM(4\4D
M_?BO)M6:-95A^_G$_GLI7HIY(1RV-/T["46\U.8:"B$B12J>Z/$/J 4YBB^@
M*2]_T;'&&AH*"BYH5AM+#[(DK_[)6QV(EH'IGC' M0'N&]AG#*S:P+K4P*X-
M[#(RE90R#CX19+5@](B80DLV]5 &L[26\I-<[?NS8/)M(NW$ZEDF4EBD@!X>
MT"WZ1M*"5/N1A^BO@J1)]"/)]V@=!+3(!;\(\]$'09*4?Y+HK\\^^OCA$_J
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
M6PCTCJAW)- [HMZ10.^(>D<"O>-DLX1 [XAZ1P*](^H="?2.J'<DT#NBWI%
M[XAZ1P*](^H="?16U%L)]%;46PGT5M1;"?16U%L)]-;)9C>!WHIZ*X'>BGHK
M@=Z*>BN!WHIZ*X'>BGHK@=Z&>AN!WH9Z&X'>AGH;@=Z&>AN!WH9Z&X'>-OFS
MDD!O0[V-0&]#O8U ;T.]C4!O0[V-0&]'O9U ;T>]G4!O1[V=0&]'O9U ;T>]
MG4!O1[V=0&^?'#8AT-M1;R?0VU%O)]#;46\GT#NAWHE [X1Z)P*]$^J="/1.
MJ'<BT#NAWHE [X1Z)P*]$^J="/1.D\."!'HGU#L1Z)U0[T2@=T:],X'>&?7.
M!'IGU#L3Z)U1[TR@=T:],X'>&?7.!'IGU#L3Z)U1[TR@=YX<]B;0.Z/>F4#O
M!O5N"/1N4.^&0.\&]6Y^4N]A_#J4X=;SO<;G_R35X^6[Y?;XZ_+[XN2]7'&N
M[RN&I[]02P,$%     @ 481E6,T>9+Q  @  >C0  !,   !;0V]N=&5N=%]4
M>7!E<UTN>&ULS=O?;MHP%,?Q5T&YK4B('3MF*KUI=[OU8B_@):9$Y)]BMZ-O
M/Q/:2ILZM(I)^]X0@>WS._&1/G=<?WL>G5\<NK;WFV07PO@IRWRU<YWUZ3"Z
M/JYLAZFS(7Z='K+15GO[X#*Q6NFL&OK@^K ,QQK)S?6=V]K'-BP^'^+/OAGZ
M33*YUB>+V]/&8]8FL>/8-I4-<3U[ZNO?4I8O"6D\.>_QNV;T5W%#DKV;<%SY
M<\#+N:]/;IJ:VBWN[12^V"[NR@YMYL-SZWQZOL0[/0[;;5.Y>J@>NW@D]>/D
M;.UWSH6N34]%K\XGAWC#[O297YP_ESD7&'?>3\/HX\0F]_&XUY$<3R_'6,A-
MH3G_BF^)L?3%[^>.TZY=_9?9\7I_#--^GH?/YL?E=_SKC-_J?[ / >E#0OHH
M('TH2!\:TD<)Z<- ^EA#^LA7E$8HHN844G.*J3D%U9RB:DYA-:>XFE-@S2FR
M"HJL@B*KH,@J*+(*BJR"(JN@R"HHL@J*K((BJZ3(*BFR2HJLDB*KI,@J*;)*
MBJR2(JNDR"HILA8460N*K 5%UH(B:T&1M:#(6E!D+2BR%A19"XJLBB*KHLBJ
M*+(JBJR*(JNBR*HHLBJ*K(HBJZ+(JBFR:HJLFB*KILBJ*;)JBJR:(JNFR*HI
MLFJ*K"5%UI(B:TF1M:3(6E)D+2FREA192XJL)476DB*KH<AJ*+(:BJR&(JNA
MR&HHLAJ*K(8BJZ'(:BBRKBFRKBFRKO^GK-^'8?^/X^=GVMFF?\W/YK\<W?P$
M4$L! A0#%     @ 481E6 =!36*!    L0   !               ( !
M &1O8U!R;W!S+V%P<"YX;6Q02P$"% ,4    " !1A&58,U@*..\    K @
M$0              @ &O    9&]C4')O<',O8V]R92YX;6Q02P$"% ,4
M" !1A&58F5R<(Q &  "<)P  $P              @ '- 0  >&PO=&AE;64O
M=&AE;64Q+GAM;%!+ 0(4 Q0    ( %&$95A=4EJ_LP<  " R   8
M      " @0X(  !X;"]W;W)K<VAE971S+W-H965T,2YX;6Q02P$"% ,4
M" !1A&582LC/6J$$   _$@  &               @('W#P  >&PO=V]R:W-H
M965T<R]S:&5E=#(N>&UL4$L! A0#%     @ 481E6,/#\JP.!   [Q(  !@
M             ("!SA0  'AL+W=O<FMS:&5E=',O<VAE970S+GAM;%!+ 0(4
M Q0    ( %&$95C$7S UUP8  "D<   8              " @1(9  !X;"]W
M;W)K<VAE971S+W-H965T-"YX;6Q02P$"% ,4    " !1A&58OR[7)]\"  #]
M"0  &               @($?(   >&PO=V]R:W-H965T<R]S:&5E=#4N>&UL
M4$L! A0#%     @ 481E6+'VX:_L#   J;$  !@              ("!-",
M 'AL+W=O<FMS:&5E=',O<VAE970V+GAM;%!+ 0(4 Q0    ( %&$95@D6)N
M/ ,  $\+   8              " @58P  !X;"]W;W)K<VAE971S+W-H965T
M-RYX;6Q02P$"% ,4    " !1A&58ZIC$9M,)  "=,   &
M@('(,P  >&PO=V]R:W-H965T<R]S:&5E=#@N>&UL4$L! A0#%     @ 481E
M6/@("5I" @  7@4  !@              ("!T3T  'AL+W=O<FMS:&5E=',O
M<VAE970Y+GAM;%!+ 0(4 Q0    ( %&$95BE!XCHQ0(  "<*   9
M      " @4E   !X;"]W;W)K<VAE971S+W-H965T,3 N>&UL4$L! A0#%
M  @ 481E6&PIO9C9 P  9@@  !D              ("!14,  'AL+W=O<FMS
M:&5E=',O<VAE970Q,2YX;6Q02P$"% ,4    " !1A&58I#PMT"X5  "8/
M&0              @(%51P  >&PO=V]R:W-H965T<R]S:&5E=#$R+GAM;%!+
M 0(4 Q0    ( %&$95@F9BG _P4  (0-   9              " @;I<  !X
M;"]W;W)K<VAE971S+W-H965T,3,N>&UL4$L! A0#%     @ 481E6$$8/O:N
M @  I 4  !D              ("!\&(  'AL+W=O<FMS:&5E=',O<VAE970Q
M-"YX;6Q02P$"% ,4    " !1A&58Y+-$SX0#  ![!P  &0
M@('590  >&PO=V]R:W-H965T<R]S:&5E=#$U+GAM;%!+ 0(4 Q0    ( %&$
M95CU3?G9R@,  %@(   9              " @9!I  !X;"]W;W)K<VAE971S
M+W-H965T,38N>&UL4$L! A0#%     @ 481E6/?CPAV% @  O@4  !D
M         ("!D6T  'AL+W=O<FMS:&5E=',O<VAE970Q-RYX;6Q02P$"% ,4
M    " !1A&58/3 5(( $  #."0  &0              @(%-<   >&PO=V]R
M:W-H965T<R]S:&5E=#$X+GAM;%!+ 0(4 Q0    ( %&$95B]0+35S@4  ' .
M   9              " @01U  !X;"]W;W)K<VAE971S+W-H965T,3DN>&UL
M4$L! A0#%     @ 481E6"OA=I-\!0  [0P  !D              ("!"7L
M 'AL+W=O<FMS:&5E=',O<VAE970R,"YX;6Q02P$"% ,4    " !1A&58FKUS
MWL@%   Q#0  &0              @(&\@   >&PO=V]R:W-H965T<R]S:&5E
M=#(Q+GAM;%!+ 0(4 Q0    ( %&$95B:">38K (  .L%   9
M  " @;N&  !X;"]W;W)K<VAE971S+W-H965T,C(N>&UL4$L! A0#%     @
M481E6(?0&(') P  '@D  !D              ("!GHD  'AL+W=O<FMS:&5E
M=',O<VAE970R,RYX;6Q02P$"% ,4    " !1A&58\\JK:RL%   %#   &0
M            @(&>C0  >&PO=V]R:W-H965T<R]S:&5E=#(T+GAM;%!+ 0(4
M Q0    ( %&$95@K6K3X$P8  & -   9              " @0"3  !X;"]W
M;W)K<VAE971S+W-H965T,C4N>&UL4$L! A0#%     @ 481E6 XM'RY^!0
M! T  !D              ("!2ID  'AL+W=O<FMS:&5E=',O<VAE970R-BYX
M;6Q02P$"% ,4    " !1A&58X+9KQB8'  "*$0  &0              @('_
MG@  >&PO=V]R:W-H965T<R]S:&5E=#(W+GAM;%!+ 0(4 Q0    ( %&$95CN
MWMMBN 4  #@/   9              " @5RF  !X;"]W;W)K<VAE971S+W-H
M965T,C@N>&UL4$L! A0#%     @ 481E6'\AUE(L!P  S1   !D
M     ("!2ZP  'AL+W=O<FMS:&5E=',O<VAE970R.2YX;6Q02P$"% ,4
M" !1A&58^K#,;T,#  "A!P  &0              @(&NLP  >&PO=V]R:W-H
M965T<R]S:&5E=#,P+GAM;%!+ 0(4 Q0    ( %&$95A4JBR]01<  '=-   9
M              " @2BW  !X;"]W;W)K<VAE971S+W-H965T,S$N>&UL4$L!
M A0#%     @ 481E6(0/]23D @  508  !D              ("!H,X  'AL
M+W=O<FMS:&5E=',O<VAE970S,BYX;6Q02P$"% ,4    " !1A&589(?:5 ,$
M  !@"0  &0              @(&[T0  >&PO=V]R:W-H965T<R]S:&5E=#,S
M+GAM;%!+ 0(4 Q0    ( %&$95BJ?E*5C@(  '8%   9              "
M@?75  !X;"]W;W)K<VAE971S+W-H965T,S0N>&UL4$L! A0#%     @ 481E
M6"8'^B__ @  4 8  !D              ("!NM@  'AL+W=O<FMS:&5E=',O
M<VAE970S-2YX;6Q02P$"% ,4    " !1A&58N%N.3UT#   :"   &0
M        @('PVP  >&PO=V]R:W-H965T<R]S:&5E=#,V+GAM;%!+ 0(4 Q0
M   ( %&$95C>?V9Q304  %<.   9              " @83?  !X;"]W;W)K
M<VAE971S+W-H965T,S<N>&UL4$L! A0#%     @ 481E6'SIAZ0' P  >0<
M !D              ("!".4  'AL+W=O<FMS:&5E=',O<VAE970S."YX;6Q0
M2P$"% ,4    " !1A&58D&F=<ZT"  "[!0  &0              @(%&Z
M>&PO=V]R:W-H965T<R]S:&5E=#,Y+GAM;%!+ 0(4 Q0    ( %&$95B48D7-
M60,  ,0'   9              " @2KK  !X;"]W;W)K<VAE971S+W-H965T
M-# N>&UL4$L! A0#%     @ 481E6*FY#AZY P  3 D  !D
M ("!NNX  'AL+W=O<FMS:&5E=',O<VAE970T,2YX;6Q02P$"% ,4    " !1
MA&58/V8VQ!\&   "$   &0              @(&J\@  >&PO=V]R:W-H965T
M<R]S:&5E=#0R+GAM;%!+ 0(4 Q0    ( %&$95CRDP?G3P4  !</   9
M          " @0#Y  !X;"]W;W)K<VAE971S+W-H965T-#,N>&UL4$L! A0#
M%     @ 481E6*L^=[O+ P  _P@  !D              ("!AOX  'AL+W=O
M<FMS:&5E=',O<VAE970T-"YX;6Q02P$"% ,4    " !1A&58-&U'QO\"   Y
M!P  &0              @(&( @$ >&PO=V]R:W-H965T<R]S:&5E=#0U+GAM
M;%!+ 0(4 Q0    ( %&$95@(@"R<$ (  'H$   9              " @;X%
M 0!X;"]W;W)K<VAE971S+W-H965T-#8N>&UL4$L! A0#%     @ 481E6,[S
MTPN !@  SBH  !D              ("!!0@! 'AL+W=O<FMS:&5E=',O<VAE
M970T-RYX;6Q02P$"% ,4    " !1A&58Y^E)3O\#  "_#   &0
M    @(&\#@$ >&PO=V]R:W-H965T<R]S:&5E=#0X+GAM;%!+ 0(4 Q0    (
M %&$95B+X]K-S@,  $H/   9              " @?(2 0!X;"]W;W)K<VAE
M971S+W-H965T-#DN>&UL4$L! A0#%     @ 481E6&(NRMW.!   A!H  !D
M             ("!]Q8! 'AL+W=O<FMS:&5E=',O<VAE970U,"YX;6Q02P$"
M% ,4    " !1A&58!*D1"2H#   @#   &0              @('\&P$ >&PO
M=V]R:W-H965T<R]S:&5E=#4Q+GAM;%!+ 0(4 Q0    ( %&$95B$+(^^.P(
M + $   9              " @5T? 0!X;"]W;W)K<VAE971S+W-H965T-3(N
M>&UL4$L! A0#%     @ 481E6&^77!=W @  B@8  !D              ("!
MSR$! 'AL+W=O<FMS:&5E=',O<VAE970U,RYX;6Q02P$"% ,4    " !1A&58
M"PA.'T,"  "^!0  &0              @(%]) $ >&PO=V]R:W-H965T<R]S
M:&5E=#4T+GAM;%!+ 0(4 Q0    ( %&$95CM[SFAVP,  (40   9
M      " @?<F 0!X;"]W;W)K<VAE971S+W-H965T-34N>&UL4$L! A0#%
M  @ 481E6++VVKCJ 0  %@0  !D              ("!"2L! 'AL+W=O<FMS
M:&5E=',O<VAE970U-BYX;6Q02P$"% ,4    " !1A&58:CY%LN@#   O$@
M&0              @($J+0$ >&PO=V]R:W-H965T<R]S:&5E=#4W+GAM;%!+
M 0(4 Q0    ( %&$95@A(I^-H (  *D(   9              " @4DQ 0!X
M;"]W;W)K<VAE971S+W-H965T-3@N>&UL4$L! A0#%     @ 481E6 V7K""H
M P  Z X  !D              ("!(#0! 'AL+W=O<FMS:&5E=',O<VAE970U
M.2YX;6Q02P$"% ,4    " !1A&58!)L $N4%  !.(@  &0
M@('_-P$ >&PO=V]R:W-H965T<R]S:&5E=#8P+GAM;%!+ 0(4 Q0    ( %&$
M95B2QX(?  (  "P$   9              " @1L^ 0!X;"]W;W)K<VAE971S
M+W-H965T-C$N>&UL4$L! A0#%     @ 481E6 [ "(;# P  P L  !D
M         ("!4D ! 'AL+W=O<FMS:&5E=',O<VAE970V,BYX;6Q02P$"% ,4
M    " !1A&58LQ]1V?\"   O"0  &0              @(%,1 $ >&PO=V]R
M:W-H965T<R]S:&5E=#8S+GAM;%!+ 0(4 Q0    ( %&$95AYT"_B"@4  .$:
M   9              " @8)' 0!X;"]W;W)K<VAE971S+W-H965T-C0N>&UL
M4$L! A0#%     @ 481E6,9\^/9W @  *P<  !D              ("!PTP!
M 'AL+W=O<FMS:&5E=',O<VAE970V-2YX;6Q02P$"% ,4    " !1A&58?[Q9
M\@$#   R"0  &0              @(%Q3P$ >&PO=V]R:W-H965T<R]S:&5E
M=#8V+GAM;%!+ 0(4 Q0    ( %&$95AN:MW?+P4  / @   9
M  " @:E2 0!X;"]W;W)K<VAE971S+W-H965T-C<N>&UL4$L! A0#%     @
M481E6/:&ES)A!@  W38  !D              ("!#U@! 'AL+W=O<FMS:&5E
M=',O<VAE970V."YX;6Q02P$"% ,4    " !1A&58H(P:B&D#  !G#   &0
M            @(&G7@$ >&PO=V]R:W-H965T<R]S:&5E=#8Y+GAM;%!+ 0(4
M Q0    ( %&$95@W'+VVJ@0  ! >   9              " @4=B 0!X;"]W
M;W)K<VAE971S+W-H965T-S N>&UL4$L! A0#%     @ 481E6 ,DIZ[F!0
M>2   !D              ("!*&<! 'AL+W=O<FMS:&5E=',O<VAE970W,2YX
M;6Q02P$"% ,4    " !1A&58$)W^<<P&  # *   &0              @(%%
M;0$ >&PO=V]R:W-H965T<R]S:&5E=#<R+GAM;%!+ 0(4 Q0    ( %&$95@"
MJ$B/Y@(  +\)   9              " @4AT 0!X;"]W;W)K<VAE971S+W-H
M965T-S,N>&UL4$L! A0#%     @ 481E6&2NZ#S:!   C10  !D
M     ("!97<! 'AL+W=O<FMS:&5E=',O<VAE970W-"YX;6Q02P$"% ,4
M" !1A&58%EQ"!58$  !?$P  &0              @(%V? $ >&PO=V]R:W-H
M965T<R]S:&5E=#<U+GAM;%!+ 0(4 Q0    ( %&$95C&3)0F< ,  ( +   9
M              " @0.! 0!X;"]W;W)K<VAE971S+W-H965T-S8N>&UL4$L!
M A0#%     @ 481E6(*2ES!N @  N <  !D              ("!JH0! 'AL
M+W=O<FMS:&5E=',O<VAE970W-RYX;6Q02P$"% ,4    " !1A&582DA\SNL"
M  !9"0  &0              @(%/AP$ >&PO=V]R:W-H965T<R]S:&5E=#<X
M+GAM;%!+ 0(4 Q0    ( %&$95BM@7!$Y0(  &L)   9              "
M@7&* 0!X;"]W;W)K<VAE971S+W-H965T-SDN>&UL4$L! A0#%     @ 481E
M6$CQ"-!3 P  $@L  !D              ("!C8T! 'AL+W=O<FMS:&5E=',O
M<VAE970X,"YX;6Q02P$"% ,4    " !1A&58NKV,=DP$   :&   &0
M        @($7D0$ >&PO=V]R:W-H965T<R]S:&5E=#@Q+GAM;%!+ 0(4 Q0
M   ( %&$95@],/[)F0(  / &   9              " @9J5 0!X;"]W;W)K
M<VAE971S+W-H965T.#(N>&UL4$L! A0#%     @ 481E6 M P8ID P  C L
M !D              ("!:I@! 'AL+W=O<FMS:&5E=',O<VAE970X,RYX;6Q0
M2P$"% ,4    " !1A&58D5D61,H#  "[#   &0              @($%G $
M>&PO=V]R:W-H965T<R]S:&5E=#@T+GAM;%!+ 0(4 Q0    ( %&$95COW]E2
MD@0  "\1   9              " @0:@ 0!X;"]W;W)K<VAE971S+W-H965T
M.#4N>&UL4$L! A0#%     @ 481E6,\59$NQ @  2P<  !D
M ("!SZ0! 'AL+W=O<FMS:&5E=',O<VAE970X-BYX;6Q02P$"% ,4    " !1
MA&5841OMVA<#  "T"0  &0              @(&WIP$ >&PO=V]R:W-H965T
M<R]S:&5E=#@W+GAM;%!+ 0(4 Q0    ( %&$95CC'!+>/@,  $T*   9
M          " @06K 0!X;"]W;W)K<VAE971S+W-H965T.#@N>&UL4$L! A0#
M%     @ 481E6*#: I37!0  _2   !D              ("!>JX! 'AL+W=O
M<FMS:&5E=',O<VAE970X.2YX;6Q02P$"% ,4    " !1A&58]<J)!EX%  !F
M&0  &0              @(&(M $ >&PO=V]R:W-H965T<R]S:&5E=#DP+GAM
M;%!+ 0(4 Q0    ( %&$95B'SX'OD@4  *H;   9              " @1VZ
M 0!X;"]W;W)K<VAE971S+W-H965T.3$N>&UL4$L! A0#%     @ 481E6,;O
M'"RS P  Y0T  !D              ("!YK\! 'AL+W=O<FMS:&5E=',O<VAE
M970Y,BYX;6Q02P$"% ,4    " !1A&58J+KG]54#   *%0  #0
M    @ '0PP$ >&PO<W1Y;&5S+GAM;%!+ 0(4 Q0    ( %&$95B7BKL<P
M !,"   +              "  5#' 0!?<F5L<R\N<F5L<U!+ 0(4 Q0    (
M %&$95@N&=*<C@8  !\]   /              "  3G( 0!X;"]W;W)K8F]O
M:RYX;6Q02P$"% ,4    " !1A&58'$;AMJL"   K-@  &@
M@ 'TS@$ >&PO7W)E;',O=V]R:V)O;VLN>&UL+G)E;'-02P$"% ,4    " !1
MA&58S1YDO$ "  !Z-   $P              @ '7T0$ 6T-O;G1E;G1?5'EP
=97-=+GAM;%!+!08     9 !D ',;  !(U $    !

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>109
<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>110
<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>112
<FILENAME>FilingSummary.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.24.0.1</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>325</ContextCount>
  <ElementCount>444</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>true</FootnotesReported>
  <SegmentCount>82</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>8</UnitCount>
  <MyReports>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R1.htm</HtmlFileName>
      <LongName>000 - Document - Document And Entity Information</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-document-and-entity-information</Role>
      <ShortName>Document And Entity Information</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R2.htm</HtmlFileName>
      <LongName>001 - Statement - Consolidated Statements of Operations</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations</Role>
      <ShortName>Consolidated Statements of Operations</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>2</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R3.htm</HtmlFileName>
      <LongName>002 - Statement - Consolidated Statements of Comprehensive Income</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income</Role>
      <ShortName>Consolidated Statements of Comprehensive Income</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>3</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R4.htm</HtmlFileName>
      <LongName>003 - Statement - Consolidated Balance Sheets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets</Role>
      <ShortName>Consolidated Balance Sheets</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>4</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R5.htm</HtmlFileName>
      <LongName>004 - Statement - Consolidated Balance Sheets (Parentheticals)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals</Role>
      <ShortName>Consolidated Balance Sheets (Parentheticals)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>5</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R6.htm</HtmlFileName>
      <LongName>005 - Statement - Consolidated Statements of Stockholders' Equity</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity</Role>
      <ShortName>Consolidated Statements of Stockholders' Equity</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>6</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R7.htm</HtmlFileName>
      <LongName>006 - Statement - Consolidated Statements of Stockholders' Equity (Parentheticals)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals</Role>
      <ShortName>Consolidated Statements of Stockholders' Equity (Parentheticals)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>7</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R8.htm</HtmlFileName>
      <LongName>007 - Statement - Consolidated Statements of Cash Flows</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows</Role>
      <ShortName>Consolidated Statements of Cash Flows</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>8</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9.htm</HtmlFileName>
      <LongName>008 - Statement - Consolidated Statements of Cash Flows (Parentheticals)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals</Role>
      <ShortName>Consolidated Statements of Cash Flows (Parentheticals)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>9</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R10.htm</HtmlFileName>
      <LongName>995445 - Disclosure - Insider Trading Arrangements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements</Role>
      <ShortName>Insider Trading Arrangements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>10</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R11.htm</HtmlFileName>
      <LongName>995455 - Disclosure - Note 1 - Organization</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-1-organization</Role>
      <ShortName>Note 1 - Organization</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>11</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R12.htm</HtmlFileName>
      <LongName>995456 - Disclosure - Note 2 - Summary of Significant Accounting Policies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies</Role>
      <ShortName>Note 2 - Summary of Significant Accounting Policies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>12</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R13.htm</HtmlFileName>
      <LongName>995457 - Disclosure - Note 3 - Business Combinations</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations</Role>
      <ShortName>Note 3 - Business Combinations</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>13</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R14.htm</HtmlFileName>
      <LongName>995458 - Disclosure - Note 4 - Inventories</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-4-inventories</Role>
      <ShortName>Note 4 - Inventories</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>14</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R15.htm</HtmlFileName>
      <LongName>995459 - Disclosure - Note 5 - Property and Equipment</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment</Role>
      <ShortName>Note 5 - Property and Equipment</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>15</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R16.htm</HtmlFileName>
      <LongName>995460 - Disclosure - Note 6 - Goodwill and Intangible Assets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-</Role>
      <ShortName>Note 6 - Goodwill and Intangible Assets</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>16</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R17.htm</HtmlFileName>
      <LongName>995461 - Disclosure - Note 7 - Current Debt</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-7-current-debt</Role>
      <ShortName>Note 7 - Current Debt</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>17</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R18.htm</HtmlFileName>
      <LongName>995462 - Disclosure - Note 8 - Credit Agreement</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement</Role>
      <ShortName>Note 8 - Credit Agreement</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>18</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R19.htm</HtmlFileName>
      <LongName>995463 - Disclosure - Note 9 - Leases</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-9-leases</Role>
      <ShortName>Note 9 - Leases</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>19</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R20.htm</HtmlFileName>
      <LongName>995464 - Disclosure - Note 10 - Fair Value Measurements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements</Role>
      <ShortName>Note 10 - Fair Value Measurements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>20</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R21.htm</HtmlFileName>
      <LongName>995465 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities</Role>
      <ShortName>Note 11 - Derivative Instruments and Hedging Activities</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>21</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R22.htm</HtmlFileName>
      <LongName>995466 - Disclosure - Note 12 - Stockholders' Equity</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity</Role>
      <ShortName>Note 12 - Stockholders' Equity</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>22</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R23.htm</HtmlFileName>
      <LongName>995467 - Disclosure - Note 13 - Retirement Plans</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans</Role>
      <ShortName>Note 13 - Retirement Plans</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>23</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R24.htm</HtmlFileName>
      <LongName>995468 - Disclosure - Note 14 - Share-based Compensation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation</Role>
      <ShortName>Note 14 - Share-based Compensation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>24</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R25.htm</HtmlFileName>
      <LongName>995469 - Disclosure - Note 15 - Commitments and Contingencies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies</Role>
      <ShortName>Note 15 - Commitments and Contingencies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>25</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R26.htm</HtmlFileName>
      <LongName>995470 - Disclosure - Note 16 - Revenue</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-16-revenue</Role>
      <ShortName>Note 16 - Revenue</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>26</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R27.htm</HtmlFileName>
      <LongName>995471 - Disclosure - Note 17 - Income Taxes</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes</Role>
      <ShortName>Note 17 - Income Taxes</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>27</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R28.htm</HtmlFileName>
      <LongName>995472 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss</Role>
      <ShortName>Note 18 - Accumulated Other Comprehensive Loss</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>28</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R29.htm</HtmlFileName>
      <LongName>995473 - Disclosure - Note 19 - Segment Information</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-19-segment-information</Role>
      <ShortName>Note 19 - Segment Information</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>29</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R30.htm</HtmlFileName>
      <LongName>995474 - Disclosure - Schedule II - Valuation and Qualifying Accounts</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts</Role>
      <ShortName>Schedule II - Valuation and Qualifying Accounts</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>30</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R31.htm</HtmlFileName>
      <LongName>995475 - Disclosure - Significant Accounting Policies (Policies)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies</Role>
      <ShortName>Significant Accounting Policies (Policies)</ShortName>
      <MenuCategory>Policies</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies</ParentRole>
      <Position>31</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R32.htm</HtmlFileName>
      <LongName>995476 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables</Role>
      <ShortName>Note 2 - Summary of Significant Accounting Policies (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies</ParentRole>
      <Position>32</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R33.htm</HtmlFileName>
      <LongName>995477 - Disclosure - Note 3 - Business Combinations (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables</Role>
      <ShortName>Note 3 - Business Combinations (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations</ParentRole>
      <Position>33</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R34.htm</HtmlFileName>
      <LongName>995478 - Disclosure - Note 4 - Inventories (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables</Role>
      <ShortName>Note 4 - Inventories (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-4-inventories</ParentRole>
      <Position>34</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R35.htm</HtmlFileName>
      <LongName>995479 - Disclosure - Note 5 - Property and Equipment (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables</Role>
      <ShortName>Note 5 - Property and Equipment (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment</ParentRole>
      <Position>35</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R36.htm</HtmlFileName>
      <LongName>995480 - Disclosure - Note 6 - Goodwill and Intangible Assets (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables</Role>
      <ShortName>Note 6 - Goodwill and Intangible Assets (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-</ParentRole>
      <Position>36</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R37.htm</HtmlFileName>
      <LongName>995481 - Disclosure - Note 9 - Leases (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables</Role>
      <ShortName>Note 9 - Leases (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-9-leases</ParentRole>
      <Position>37</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R38.htm</HtmlFileName>
      <LongName>995482 - Disclosure - Note 10 - Fair Value Measurements (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables</Role>
      <ShortName>Note 10 - Fair Value Measurements (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements</ParentRole>
      <Position>38</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R39.htm</HtmlFileName>
      <LongName>995483 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables</Role>
      <ShortName>Note 11 - Derivative Instruments and Hedging Activities (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities</ParentRole>
      <Position>39</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R40.htm</HtmlFileName>
      <LongName>995484 - Disclosure - Note 14 - Share-based Compensation (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables</Role>
      <ShortName>Note 14 - Share-based Compensation (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation</ParentRole>
      <Position>40</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R41.htm</HtmlFileName>
      <LongName>995485 - Disclosure - Note 16 - Revenue (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables</Role>
      <ShortName>Note 16 - Revenue (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-16-revenue</ParentRole>
      <Position>41</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R42.htm</HtmlFileName>
      <LongName>995486 - Disclosure - Note 17 - Income Taxes (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables</Role>
      <ShortName>Note 17 - Income Taxes (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes</ParentRole>
      <Position>42</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R43.htm</HtmlFileName>
      <LongName>995487 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables</Role>
      <ShortName>Note 18 - Accumulated Other Comprehensive Loss (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss</ParentRole>
      <Position>43</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R44.htm</HtmlFileName>
      <LongName>995488 - Disclosure - Note 19 - Segment Information (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables</Role>
      <ShortName>Note 19 - Segment Information (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-19-segment-information</ParentRole>
      <Position>44</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R45.htm</HtmlFileName>
      <LongName>995489 - Disclosure - Schedule II - Valuation and Qualifying Accounts (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables</Role>
      <ShortName>Schedule II - Valuation and Qualifying Accounts (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts</ParentRole>
      <Position>45</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R46.htm</HtmlFileName>
      <LongName>995490 - Disclosure - Note 1 - Organization (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual</Role>
      <ShortName>Note 1 - Organization (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-1-organization</ParentRole>
      <Position>46</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R47.htm</HtmlFileName>
      <LongName>995491 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual</Role>
      <ShortName>Note 2 - Summary of Significant Accounting Policies (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables</ParentRole>
      <Position>47</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R48.htm</HtmlFileName>
      <LongName>995492 - Disclosure - Note 2 - Summary of Significant Accounting Policies - Loss Per Basic and Diluted Weighted Average Common Share Outstanding for Continuing and Discontinued Operations (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details</Role>
      <ShortName>Note 2 - Summary of Significant Accounting Policies - Loss Per Basic and Diluted Weighted Average Common Share Outstanding for Continuing and Discontinued Operations (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>48</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R49.htm</HtmlFileName>
      <LongName>995493 - Disclosure - Note 3 - Business Combinations (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual</Role>
      <ShortName>Note 3 - Business Combinations (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables</ParentRole>
      <Position>49</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R50.htm</HtmlFileName>
      <LongName>995494 - Disclosure - Note 3 - Business Combinations - Assets Acquired and Liabilities Assumed (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details</Role>
      <ShortName>Note 3 - Business Combinations - Assets Acquired and Liabilities Assumed (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>50</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R51.htm</HtmlFileName>
      <LongName>995495 - Disclosure - Note 2 - Business Combinations - Intangible Assets Acquired (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details</Role>
      <ShortName>Note 2 - Business Combinations - Intangible Assets Acquired (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>51</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R52.htm</HtmlFileName>
      <LongName>995496 - Disclosure - Note 3 - Business Combinations - Pro Forma Summary (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details</Role>
      <ShortName>Note 3 - Business Combinations - Pro Forma Summary (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>52</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R53.htm</HtmlFileName>
      <LongName>995497 - Disclosure - Note 4 - Inventories - Components of Inventories (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details</Role>
      <ShortName>Note 4 - Inventories - Components of Inventories (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>53</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R54.htm</HtmlFileName>
      <LongName>995498 - Disclosure - Note 5 - Property and Equipment (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual</Role>
      <ShortName>Note 5 - Property and Equipment (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables</ParentRole>
      <Position>54</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R55.htm</HtmlFileName>
      <LongName>995499 - Disclosure - Note 5 - Property and Equipment - Property, Plant and Equipment (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details</Role>
      <ShortName>Note 5 - Property and Equipment - Property, Plant and Equipment (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>55</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R56.htm</HtmlFileName>
      <LongName>995500 - Disclosure - Note 6 - Goodwill and Intangible Assets (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual</Role>
      <ShortName>Note 6 - Goodwill and Intangible Assets (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables</ParentRole>
      <Position>56</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R57.htm</HtmlFileName>
      <LongName>995501 - Disclosure - Note 6 - Goodwill and Intangible Assets - Summary of Intangible Assets (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details</Role>
      <ShortName>Note 6 - Goodwill and Intangible Assets - Summary of Intangible Assets (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>57</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R58.htm</HtmlFileName>
      <LongName>995502 - Disclosure - Note 6 - Goodwill and Intangible Assets - Summary of Estimated Amortization Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details</Role>
      <ShortName>Note 6 - Goodwill and Intangible Assets - Summary of Estimated Amortization Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>58</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R59.htm</HtmlFileName>
      <LongName>995503 - Disclosure - Note 7 - Current Debt (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual</Role>
      <ShortName>Note 7 - Current Debt (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-7-current-debt</ParentRole>
      <Position>59</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R60.htm</HtmlFileName>
      <LongName>995504 - Disclosure - Note 8 - Credit Agreement (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual</Role>
      <ShortName>Note 8 - Credit Agreement (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement</ParentRole>
      <Position>60</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R61.htm</HtmlFileName>
      <LongName>995505 - Disclosure - Note 9 - Leases (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual</Role>
      <ShortName>Note 9 - Leases (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables</ParentRole>
      <Position>61</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R62.htm</HtmlFileName>
      <LongName>995506 - Disclosure - Note 9 - Leases - Leases Recorded on the Consolidated Balance Sheet (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details</Role>
      <ShortName>Note 9 - Leases - Leases Recorded on the Consolidated Balance Sheet (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>62</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R63.htm</HtmlFileName>
      <LongName>995507 - Disclosure - Note 9 - Leases - Lease Cost (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details</Role>
      <ShortName>Note 9 - Leases - Lease Cost (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>63</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R64.htm</HtmlFileName>
      <LongName>995508 - Disclosure - Note 9 - Leases - Future Maturities of Lease Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details</Role>
      <ShortName>Note 9 - Leases - Future Maturities of Lease Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>64</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R65.htm</HtmlFileName>
      <LongName>995509 - Disclosure - Note 9 - Leases - Lease Terms and Discount Rates for Lease Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details</Role>
      <ShortName>Note 9 - Leases - Lease Terms and Discount Rates for Lease Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>65</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R66.htm</HtmlFileName>
      <LongName>995510 - Disclosure - Note 9 - Leases - Other Information Related to Operating and Finance Leases (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details</Role>
      <ShortName>Note 9 - Leases - Other Information Related to Operating and Finance Leases (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>66</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R67.htm</HtmlFileName>
      <LongName>995511 - Disclosure - Note 10 - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on Recurring Basis (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details</Role>
      <ShortName>Note 10 - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on Recurring Basis (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>67</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R68.htm</HtmlFileName>
      <LongName>995512 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual</Role>
      <ShortName>Note 11 - Derivative Instruments and Hedging Activities (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables</ParentRole>
      <Position>68</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R69.htm</HtmlFileName>
      <LongName>995513 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities - Summary of Gains (Losses) (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details</Role>
      <ShortName>Note 11 - Derivative Instruments and Hedging Activities - Summary of Gains (Losses) (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>69</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R70.htm</HtmlFileName>
      <LongName>995514 - Disclosure - Note 12 - Stockholders' Equity (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual</Role>
      <ShortName>Note 12 - Stockholders' Equity (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity</ParentRole>
      <Position>70</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R71.htm</HtmlFileName>
      <LongName>995515 - Disclosure - Note 13 - Retirement Plans (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual</Role>
      <ShortName>Note 13 - Retirement Plans (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans</ParentRole>
      <Position>71</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R72.htm</HtmlFileName>
      <LongName>995516 - Disclosure - Note 14 - Share-based Compensation (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual</Role>
      <ShortName>Note 14 - Share-based Compensation (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables</ParentRole>
      <Position>72</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R73.htm</HtmlFileName>
      <LongName>995517 - Disclosure - Note 14 - Share-based Compensation - Share-based Compensation Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details</Role>
      <ShortName>Note 14 - Share-based Compensation - Share-based Compensation Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>73</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R74.htm</HtmlFileName>
      <LongName>995518 - Disclosure - Note 14 - Share-based Compensation - RSU and PSA Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details</Role>
      <ShortName>Note 14 - Share-based Compensation - RSU and PSA Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>74</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R75.htm</HtmlFileName>
      <LongName>995519 - Disclosure - Note 15 - Commitments and Contingencies (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual</Role>
      <ShortName>Note 15 - Commitments and Contingencies (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies</ParentRole>
      <Position>75</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R76.htm</HtmlFileName>
      <LongName>995520 - Disclosure - Note 16 - Revenue 1 (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual</Role>
      <ShortName>Note 16 - Revenue 1 (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables</ParentRole>
      <Position>76</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R77.htm</HtmlFileName>
      <LongName>995521 - Disclosure - Note 16 - Revenue 2 (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual</Role>
      <ShortName>Note 16 - Revenue 2 (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables</ParentRole>
      <Position>77</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R78.htm</HtmlFileName>
      <LongName>995522 - Disclosure - Note 16 - Revenue - Net Sales From Continuing Operations by Geographic Region (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details</Role>
      <ShortName>Note 16 - Revenue - Net Sales From Continuing Operations by Geographic Region (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>78</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R79.htm</HtmlFileName>
      <LongName>995523 - Disclosure - Note 16 - Revenue - Disaggregation of Revenue (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details</Role>
      <ShortName>Note 16 - Revenue - Disaggregation of Revenue (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>79</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R80.htm</HtmlFileName>
      <LongName>995524 - Disclosure - Note 16 - Revenue - Contract With Customer Assets and Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details</Role>
      <ShortName>Note 16 - Revenue - Contract With Customer Assets and Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>80</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R81.htm</HtmlFileName>
      <LongName>995525 - Disclosure - Note 17 - Income Taxes (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual</Role>
      <ShortName>Note 17 - Income Taxes (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables</ParentRole>
      <Position>81</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R82.htm</HtmlFileName>
      <LongName>995526 - Disclosure - Note 17 - Income Taxes - Income (Loss) from Continuing Operations (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details</Role>
      <ShortName>Note 17 - Income Taxes - Income (Loss) from Continuing Operations (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>82</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R83.htm</HtmlFileName>
      <LongName>995527 - Disclosure - Note 17 - Income Taxes - Summary of Components of Income Tax Expense for Continuing Operations (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details</Role>
      <ShortName>Note 17 - Income Taxes - Summary of Components of Income Tax Expense for Continuing Operations (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>83</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R84.htm</HtmlFileName>
      <LongName>995528 - Disclosure - Note 17 - Income Taxes - Effective Income Tax Rate Reconciliation (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details</Role>
      <ShortName>Note 17 - Income Taxes - Effective Income Tax Rate Reconciliation (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>84</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R85.htm</HtmlFileName>
      <LongName>995529 - Disclosure - Note 17 - Income Taxes - Summary of Current and Noncurrent Deferred Tax Assets and Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details</Role>
      <ShortName>Note 17 - Income Taxes - Summary of Current and Noncurrent Deferred Tax Assets and Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>85</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R86.htm</HtmlFileName>
      <LongName>995530 - Disclosure - Note 17 - Income Taxes - Summary of Changes in Unrecognized Tax Benefits (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details</Role>
      <ShortName>Note 17 - Income Taxes - Summary of Changes in Unrecognized Tax Benefits (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>86</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R87.htm</HtmlFileName>
      <LongName>995531 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details</Role>
      <ShortName>Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>87</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R88.htm</HtmlFileName>
      <LongName>995532 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details) (Parentheticals)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals</Role>
      <ShortName>Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details) (Parentheticals)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>88</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R89.htm</HtmlFileName>
      <LongName>995533 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Components of Accumulated Other Comprehensive Loss (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details</Role>
      <ShortName>Note 18 - Accumulated Other Comprehensive Loss - Components of Accumulated Other Comprehensive Loss (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>89</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R90.htm</HtmlFileName>
      <LongName>995534 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Reclassification of Accumulated Other Comprehensive Loss (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details</Role>
      <ShortName>Note 18 - Accumulated Other Comprehensive Loss - Reclassification of Accumulated Other Comprehensive Loss (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>90</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R91.htm</HtmlFileName>
      <LongName>995535 - Disclosure - Note 19 - Segment Information - Information Related to the Operations of the Company's Operating Segments (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details</Role>
      <ShortName>Note 19 - Segment Information - Information Related to the Operations of the Company's Operating Segments (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>91</Position>
    </Report>
    <Report instance="nwpx20231231c_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R92.htm</HtmlFileName>
      <LongName>995536 - Disclosure - Schedule II - Valuation and Qualifying Accounts - Valuation and Qualifying Accounts (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details</Role>
      <ShortName>Schedule II - Valuation and Qualifying Accounts - Valuation and Qualifying Accounts (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>92</Position>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <LongName>All Reports</LongName>
      <ReportType>Book</ReportType>
      <ShortName>All Reports</ShortName>
    </Report>
  </MyReports>
  <InputFiles>
    <File>nwpx-20231231.xsd</File>
    <File>nwpx-20231231_cal.xml</File>
    <File>nwpx-20231231_def.xml</File>
    <File>nwpx-20231231_lab.xml</File>
    <File>nwpx-20231231_pre.xml</File>
    <File doctype="10-K" isDefinitelyFs="true" isUsgaap="true" original="nwpx20231231c_10k.htm">nwpx20231231c_10k.htm</File>
  </InputFiles>
  <SupplementalFiles>
    <File>a01.jpg</File>
  </SupplementalFiles>
  <BaseTaxonomies>
    <BaseTaxonomy items="1">http://fasb.org/srt/2023</BaseTaxonomy>
    <BaseTaxonomy items="1110">http://fasb.org/us-gaap/2023</BaseTaxonomy>
    <BaseTaxonomy items="37">http://xbrl.sec.gov/dei/2023</BaseTaxonomy>
    <BaseTaxonomy items="5">http://xbrl.sec.gov/ecd/2023</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>JSON
<SEQUENCE>115
<FILENAME>MetaLinks.json
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
{
 "version": "2.2",
 "instance": {
  "nwpx20231231c_10k.htm": {
   "nsprefix": "nwpx",
   "nsuri": "http://www.nwpipe.com/20231231",
   "dts": {
    "schema": {
     "local": [
      "nwpx-20231231.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/2006/ref-2006-02-27.xsd",
      "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd",
      "https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd",
      "https://www.xbrl.org/dtr/type/2020-01-21/types.xsd",
      "https://www.xbrl.org/dtr/type/2022-03-31/types.xsd",
      "https://xbrl.fasb.org/srt/2023/elts/srt-2023.xsd",
      "https://xbrl.fasb.org/srt/2023/elts/srt-roles-2023.xsd",
      "https://xbrl.fasb.org/srt/2023/elts/srt-types-2023.xsd",
      "https://xbrl.fasb.org/us-gaap/2023/elts/us-gaap-2023.xsd",
      "https://xbrl.fasb.org/us-gaap/2023/elts/us-roles-2023.xsd",
      "https://xbrl.fasb.org/us-gaap/2023/elts/us-types-2023.xsd",
      "https://xbrl.sec.gov/country/2023/country-2023.xsd",
      "https://xbrl.sec.gov/currency/2023/currency-2023.xsd",
      "https://xbrl.sec.gov/dei/2023/dei-2023.xsd",
      "https://xbrl.sec.gov/ecd/2023/ecd-2023.xsd",
      "https://xbrl.sec.gov/exch/2023/exch-2023.xsd",
      "https://xbrl.sec.gov/naics/2023/naics-2023.xsd",
      "https://xbrl.sec.gov/sic/2023/sic-2023.xsd",
      "https://xbrl.sec.gov/stpr/2023/stpr-2023.xsd"
     ]
    },
    "calculationLink": {
     "local": [
      "nwpx-20231231_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "nwpx-20231231_def.xml"
     ]
    },
    "labelLink": {
     "local": [
      "nwpx-20231231_lab.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "nwpx-20231231_pre.xml"
     ]
    },
    "inline": {
     "local": [
      "nwpx20231231c_10k.htm"
     ]
    }
   },
   "keyStandard": 379,
   "keyCustom": 65,
   "axisStandard": 36,
   "axisCustom": 0,
   "memberStandard": 52,
   "memberCustom": 29,
   "hidden": {
    "total": 64,
    "http://fasb.org/us-gaap/2023": 42,
    "http://www.nwpipe.com/20231231": 12,
    "http://xbrl.sec.gov/dei/2023": 6,
    "http://xbrl.sec.gov/ecd/2023": 4
   },
   "contextCount": 325,
   "entityCount": 1,
   "segmentCount": 82,
   "elementCount": 674,
   "unitCount": 8,
   "baseTaxonomies": {
    "http://fasb.org/us-gaap/2023": 1110,
    "http://xbrl.sec.gov/dei/2023": 37,
    "http://xbrl.sec.gov/ecd/2023": 5,
    "http://fasb.org/srt/2023": 1
   },
   "report": {
    "R1": {
     "role": "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information",
     "longName": "000 - Document - Document And Entity Information",
     "shortName": "Document And Entity Information",
     "isDefault": "true",
     "groupType": "document",
     "subGroupType": "",
     "menuCat": "Cover",
     "order": "1",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "dei:DocumentType",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "b",
       "p",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "dei:DocumentType",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "b",
       "p",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R2": {
     "role": "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
     "longName": "001 - Statement - Consolidated Statements of Operations",
     "shortName": "Consolidated Statements of Operations",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "2",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:SellingGeneralAndAdministrativeExpense",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R3": {
     "role": "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
     "longName": "002 - Statement - Consolidated Statements of Comprehensive Income",
     "shortName": "Consolidated Statements of Comprehensive Income",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "3",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:NetIncomeLoss",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ComprehensiveIncomeNetOfTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R4": {
     "role": "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
     "longName": "003 - Statement - Consolidated Balance Sheets",
     "shortName": "Consolidated Balance Sheets",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "4",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R5": {
     "role": "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals",
     "longName": "004 - Statement - Consolidated Balance Sheets (Parentheticals)",
     "shortName": "Consolidated Balance Sheets (Parentheticals)",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "parenthetical",
     "menuCat": "Statements",
     "order": "5",
     "firstAnchor": null,
     "uniqueAnchor": null
    },
    "R6": {
     "role": "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
     "longName": "005 - Statement - Consolidated Statements of Stockholders' Equity",
     "shortName": "Consolidated Statements of Stockholders' Equity",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "6",
     "firstAnchor": {
      "contextRef": "i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember",
      "name": "us-gaap:SharesOutstanding",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember",
      "name": "us-gaap:SharesOutstanding",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R7": {
     "role": "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals",
     "longName": "006 - Statement - Consolidated Statements of Stockholders' Equity (Parentheticals)",
     "shortName": "Consolidated Statements of Stockholders' Equity (Parentheticals)",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "parenthetical",
     "menuCat": "Statements",
     "order": "7",
     "firstAnchor": null,
     "uniqueAnchor": null
    },
    "R8": {
     "role": "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
     "longName": "007 - Statement - Consolidated Statements of Cash Flows",
     "shortName": "Consolidated Statements of Cash Flows",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "8",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:NetIncomeLoss",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:DepreciationAndFinanceLeaseRightOfUseAssetAmortization",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R9": {
     "role": "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals",
     "longName": "008 - Statement - Consolidated Statements of Cash Flows (Parentheticals)",
     "shortName": "Consolidated Statements of Cash Flows (Parentheticals)",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "parenthetical",
     "menuCat": "Statements",
     "order": "9",
     "firstAnchor": null,
     "uniqueAnchor": null
    },
    "R10": {
     "role": "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements",
     "longName": "995445 - Disclosure - Insider Trading Arrangements",
     "shortName": "Insider Trading Arrangements",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "10",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "ecd:MtrlTermsOfTrdArrTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "ecd:MtrlTermsOfTrdArrTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R11": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-1-organization",
     "longName": "995455 - Disclosure - Note 1 - Organization",
     "shortName": "Note 1 - Organization",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "11",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R12": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
     "longName": "995456 - Disclosure - Note 2 - Summary of Significant Accounting Policies",
     "shortName": "Note 2 - Summary of Significant Accounting Policies",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "12",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R13": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations",
     "longName": "995457 - Disclosure - Note 3 - Business Combinations",
     "shortName": "Note 3 - Business Combinations",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "13",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R14": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-4-inventories",
     "longName": "995458 - Disclosure - Note 4 - Inventories",
     "shortName": "Note 4 - Inventories",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "14",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R15": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment",
     "longName": "995459 - Disclosure - Note 5 - Property and Equipment",
     "shortName": "Note 5 - Property and Equipment",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "15",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R16": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-",
     "longName": "995460 - Disclosure - Note 6 - Goodwill and Intangible Assets",
     "shortName": "Note 6 - Goodwill and Intangible Assets",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "16",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R17": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
     "longName": "995461 - Disclosure - Note 7 - Current Debt",
     "shortName": "Note 7 - Current Debt",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "17",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:LongTermDebtTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:LongTermDebtTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R18": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
     "longName": "995462 - Disclosure - Note 8 - Credit Agreement",
     "shortName": "Note 8 - Credit Agreement",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "18",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R19": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-9-leases",
     "longName": "995463 - Disclosure - Note 9 - Leases",
     "shortName": "Note 9 - Leases",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "19",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:LesseeLeaseDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:LesseeLeaseDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R20": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements",
     "longName": "995464 - Disclosure - Note 10 - Fair Value Measurements",
     "shortName": "Note 10 - Fair Value Measurements",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "20",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R21": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
     "longName": "995465 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities",
     "shortName": "Note 11 - Derivative Instruments and Hedging Activities",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "21",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R22": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
     "longName": "995466 - Disclosure - Note 12 - Stockholders' Equity",
     "shortName": "Note 12 - Stockholders' Equity",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "22",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R23": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
     "longName": "995467 - Disclosure - Note 13 - Retirement Plans",
     "shortName": "Note 13 - Retirement Plans",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "23",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R24": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
     "longName": "995468 - Disclosure - Note 14 - Share-based Compensation",
     "shortName": "Note 14 - Share-based Compensation",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "24",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R25": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
     "longName": "995469 - Disclosure - Note 15 - Commitments and Contingencies",
     "shortName": "Note 15 - Commitments and Contingencies",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "25",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R26": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
     "longName": "995470 - Disclosure - Note 16 - Revenue",
     "shortName": "Note 16 - Revenue",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "26",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R27": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
     "longName": "995471 - Disclosure - Note 17 - Income Taxes",
     "shortName": "Note 17 - Income Taxes",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "27",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R28": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss",
     "longName": "995472 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss",
     "shortName": "Note 18 - Accumulated Other Comprehensive Loss",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "28",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ComprehensiveIncomeNoteTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ComprehensiveIncomeNoteTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R29": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information",
     "longName": "995473 - Disclosure - Note 19 - Segment Information",
     "shortName": "Note 19 - Segment Information",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "29",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R30": {
     "role": "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts",
     "longName": "995474 - Disclosure - Schedule II - Valuation and Qualifying Accounts",
     "shortName": "Schedule II - Valuation and Qualifying Accounts",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "30",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R31": {
     "role": "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies",
     "longName": "995475 - Disclosure - Significant Accounting Policies (Policies)",
     "shortName": "Significant Accounting Policies (Policies)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "policies",
     "menuCat": "Policies",
     "order": "31",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ConsolidationPolicyTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ConsolidationPolicyTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R32": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables",
     "longName": "995476 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Tables)",
     "shortName": "Note 2 - Summary of Significant Accounting Policies (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "32",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:EarningsPerSharePolicyTextBlock",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:EarningsPerSharePolicyTextBlock",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R33": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables",
     "longName": "995477 - Disclosure - Note 3 - Business Combinations (Tables)",
     "shortName": "Note 3 - Business Combinations (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "33",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R34": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables",
     "longName": "995478 - Disclosure - Note 4 - Inventories (Tables)",
     "shortName": "Note 4 - Inventories (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "34",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R35": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables",
     "longName": "995479 - Disclosure - Note 5 - Property and Equipment (Tables)",
     "shortName": "Note 5 - Property and Equipment (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "35",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R36": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables",
     "longName": "995480 - Disclosure - Note 6 - Goodwill and Intangible Assets (Tables)",
     "shortName": "Note 6 - Goodwill and Intangible Assets (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "36",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R37": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables",
     "longName": "995481 - Disclosure - Note 9 - Leases (Tables)",
     "shortName": "Note 9 - Leases (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "37",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:LesseeLeaseAssetsAndLiabilitiesTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:LesseeLeaseAssetsAndLiabilitiesTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R38": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables",
     "longName": "995482 - Disclosure - Note 10 - Fair Value Measurements (Tables)",
     "shortName": "Note 10 - Fair Value Measurements (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "38",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R39": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables",
     "longName": "995483 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities (Tables)",
     "shortName": "Note 11 - Derivative Instruments and Hedging Activities (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "39",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R40": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables",
     "longName": "995484 - Disclosure - Note 14 - Share-based Compensation (Tables)",
     "shortName": "Note 14 - Share-based Compensation (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "40",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R41": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables",
     "longName": "995485 - Disclosure - Note 16 - Revenue (Tables)",
     "shortName": "Note 16 - Revenue (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "41",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R42": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables",
     "longName": "995486 - Disclosure - Note 17 - Income Taxes (Tables)",
     "shortName": "Note 17 - Income Taxes (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "42",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R43": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables",
     "longName": "995487 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss (Tables)",
     "shortName": "Note 18 - Accumulated Other Comprehensive Loss (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "43",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R44": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables",
     "longName": "995488 - Disclosure - Note 19 - Segment Information (Tables)",
     "shortName": "Note 19 - Segment Information (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "44",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R45": {
     "role": "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables",
     "longName": "995489 - Disclosure - Schedule II - Valuation and Qualifying Accounts (Tables)",
     "shortName": "Schedule II - Valuation and Qualifying Accounts (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "45",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:SummaryOfValuationAndQualifyingAccountsTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:SummaryOfValuationAndQualifyingAccountsTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R46": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual",
     "longName": "995490 - Disclosure - Note 1 - Organization (Details Textual)",
     "shortName": "Note 1 - Organization (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "46",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:NumberOfOperatingSegments",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "p",
       "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:NumberOfOperatingSegments",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "p",
       "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R47": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
     "longName": "995491 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Details Textual)",
     "shortName": "Note 2 - Summary of Significant Accounting Policies (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "47",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "nwpx:BookOverdrafts",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:CashAndCashEquivalentsPolicyTextBlock",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "nwpx:BookOverdrafts",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:CashAndCashEquivalentsPolicyTextBlock",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R48": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details",
     "longName": "995492 - Disclosure - Note 2 - Summary of Significant Accounting Policies - Loss Per Basic and Diluted Weighted Average Common Share Outstanding for Continuing and Discontinued Operations (Details)",
     "shortName": "Note 2 - Summary of Significant Accounting Policies - Loss Per Basic and Diluted Weighted Average Common Share Outstanding for Continuing and Discontinued Operations (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "48",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:NetIncomeLoss",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
       "us-gaap:EarningsPerSharePolicyTextBlock",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R49": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual",
     "longName": "995493 - Disclosure - Note 3 - Business Combinations (Details Textual)",
     "shortName": "Note 3 - Business Combinations (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "49",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember",
      "name": "us-gaap:BusinessAcquisitionPercentageOfVotingInterestsAcquired",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "0",
      "ancestors": [
       "p",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R50": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details",
     "longName": "995494 - Disclosure - Note 3 - Business Combinations - Assets Acquired and Liabilities Assumed (Details)",
     "shortName": "Note 3 - Business Combinations - Assets Acquired and Liabilities Assumed (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "50",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:Goodwill",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember",
      "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R51": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
     "longName": "995495 - Disclosure - Note 2 - Business Combinations - Intangible Assets Acquired (Details)",
     "shortName": "Note 2 - Business Combinations - Intangible Assets Acquired (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "51",
     "firstAnchor": {
      "contextRef": "d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember",
      "name": "us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember",
      "name": "us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R52": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details",
     "longName": "995496 - Disclosure - Note 3 - Business Combinations - Pro Forma Summary (Details)",
     "shortName": "Note 3 - Business Combinations - Pro Forma Summary (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "52",
     "firstAnchor": {
      "contextRef": "d_2021-01-01_2021-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember",
      "name": "us-gaap:BusinessAcquisitionsProFormaRevenue",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:BusinessAcquisitionProFormaInformationTextBlock",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2021-01-01_2021-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember",
      "name": "us-gaap:BusinessAcquisitionsProFormaRevenue",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:BusinessAcquisitionProFormaInformationTextBlock",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R53": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details",
     "longName": "995497 - Disclosure - Note 4 - Inventories - Components of Inventories (Details)",
     "shortName": "Note 4 - Inventories - Components of Inventories (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "53",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:InventoryRawMaterialsNetOfReserves",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock",
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:InventoryRawMaterialsNetOfReserves",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock",
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R54": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual",
     "longName": "995498 - Disclosure - Note 5 - Property and Equipment (Details Textual)",
     "shortName": "Note 5 - Property and Equipment (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "54",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31_StatementGeographicalAxis-MX",
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R55": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details",
     "longName": "995499 - Disclosure - Note 5 - Property and Equipment - Property, Plant and Equipment (Details)",
     "shortName": "Note 5 - Property and Equipment - Property, Plant and Equipment (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "55",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R56": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual",
     "longName": "995500 - Disclosure - Note 6 - Goodwill and Intangible Assets (Details Textual)",
     "shortName": "Note 6 - Goodwill and Intangible Assets (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "56",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:Goodwill",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": null
    },
    "R57": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details",
     "longName": "995501 - Disclosure - Note 6 - Goodwill and Intangible Assets - Summary of Intangible Assets (Details)",
     "shortName": "Note 6 - Goodwill and Intangible Assets - Summary of Intangible Assets (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "57",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R58": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details",
     "longName": "995502 - Disclosure - Note 6 - Goodwill and Intangible Assets - Summary of Estimated Amortization Expense (Details)",
     "shortName": "Note 6 - Goodwill and Intangible Assets - Summary of Estimated Amortization Expense (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "58",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R59": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual",
     "longName": "995503 - Disclosure - Note 7 - Current Debt (Details Textual)",
     "shortName": "Note 7 - Current Debt (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "59",
     "firstAnchor": {
      "contextRef": "i_2022-08-02_DebtInstrumentAxis-InterimFundingAgreementifaMember",
      "name": "us-gaap:DebtInstrumentFaceAmount",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:LongTermDebtTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2022-08-02_DebtInstrumentAxis-InterimFundingAgreementifaMember",
      "name": "us-gaap:DebtInstrumentFaceAmount",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:LongTermDebtTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R60": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual",
     "longName": "995504 - Disclosure - Note 8 - Credit Agreement (Details Textual)",
     "shortName": "Note 8 - Credit Agreement (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "60",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R61": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual",
     "longName": "995505 - Disclosure - Note 9 - Leases (Details Textual)",
     "shortName": "Note 9 - Leases (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "61",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:FinanceLeaseRightOfUseAssetAccumulatedAmortization",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:FinanceLeaseRightOfUseAssetAccumulatedAmortization",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R62": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details",
     "longName": "995506 - Disclosure - Note 9 - Leases - Leases Recorded on the Consolidated Balance Sheet (Details)",
     "shortName": "Note 9 - Leases - Leases Recorded on the Consolidated Balance Sheet (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "62",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:OperatingLeaseRightOfUseAsset",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "nwpx:LeaseRightOfUseAsset",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:LesseeLeaseAssetsAndLiabilitiesTableTextBlock",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R63": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details",
     "longName": "995507 - Disclosure - Note 9 - Leases - Lease Cost (Details)",
     "shortName": "Note 9 - Leases - Lease Cost (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "63",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:FinanceLeaseRightOfUseAssetAmortization",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:LeaseCostTableTextBlock",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:FinanceLeaseRightOfUseAssetAmortization",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:LeaseCostTableTextBlock",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R64": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details",
     "longName": "995508 - Disclosure - Note 9 - Leases - Future Maturities of Lease Liabilities (Details)",
     "shortName": "Note 9 - Leases - Future Maturities of Lease Liabilities (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "64",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:LesseeLiabilityMaturityTableTextBlock",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:LesseeLiabilityMaturityTableTextBlock",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R65": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details",
     "longName": "995509 - Disclosure - Note 9 - Leases - Lease Terms and Discount Rates for Lease Liabilities (Details)",
     "shortName": "Note 9 - Leases - Lease Terms and Discount Rates for Lease Liabilities (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "65",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R66": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details",
     "longName": "995510 - Disclosure - Note 9 - Leases - Other Information Related to Operating and Finance Leases (Details)",
     "shortName": "Note 9 - Leases - Other Information Related to Operating and Finance Leases (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "66",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:FinanceLeaseInterestPaymentOnLiability",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:FinanceLeaseInterestPaymentOnLiability",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock",
       "nwpx:LesseeLeaseDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R67": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details",
     "longName": "995511 - Disclosure - Note 10 - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on Recurring Basis (Details)",
     "shortName": "Note 10 - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on Recurring Basis (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "67",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:AssetsFairValueDisclosure",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:AssetsFairValueDisclosure",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R68": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
     "longName": "995512 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities (Details Textual)",
     "shortName": "Note 11 - Derivative Instruments and Hedging Activities (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "68",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R69": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
     "longName": "995513 - Disclosure - Note 11 - Derivative Instruments and Hedging Activities - Summary of Gains (Losses) (Details)",
     "shortName": "Note 11 - Derivative Instruments and Hedging Activities - Summary of Gains (Losses) (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "69",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31_HedgingDesignationAxis-NondesignatedMember",
      "name": "us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock",
       "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31_HedgingDesignationAxis-NondesignatedMember",
      "name": "us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock",
       "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R70": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual",
     "longName": "995514 - Disclosure - Note 12 - Stockholders' Equity (Details Textual)",
     "shortName": "Note 12 - Stockholders' Equity (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "70",
     "firstAnchor": {
      "contextRef": "i_2022-09-22",
      "name": "us-gaap:CommonStockParOrStatedValuePerShare",
      "unitRef": "USDPerShare",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "p",
       "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2022-09-22",
      "name": "us-gaap:CommonStockParOrStatedValuePerShare",
      "unitRef": "USDPerShare",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "p",
       "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R71": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
     "longName": "995515 - Disclosure - Note 13 - Retirement Plans (Details Textual)",
     "shortName": "Note 13 - Retirement Plans (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "71",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:RetirementPlanExpense",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:RetirementPlanExpense",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R72": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
     "longName": "995516 - Disclosure - Note 14 - Share-based Compensation (Details Textual)",
     "shortName": "Note 14 - Share-based Compensation (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "72",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:NumberOfActiveStockIncentivePlans",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:NumberOfActiveStockIncentivePlans",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R73": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details",
     "longName": "995517 - Disclosure - Note 14 - Share-based Compensation - Share-based Compensation Expense (Details)",
     "shortName": "Note 14 - Share-based Compensation - Share-based Compensation Expense (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "73",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R74": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details",
     "longName": "995518 - Disclosure - Note 14 - Share-based Compensation - RSU and PSA Activity (Details)",
     "shortName": "Note 14 - Share-based Compensation - RSU and PSA Activity (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "74",
     "firstAnchor": {
      "contextRef": "i_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R75": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual",
     "longName": "995519 - Disclosure - Note 15 - Commitments and Contingencies (Details Textual)",
     "shortName": "Note 15 - Commitments and Contingencies (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "75",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:LettersOfCreditOutstandingAmount",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31_OtherCommitmentsAxis-CapitalAdditionsMember",
      "name": "nwpx:OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R76": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual",
     "longName": "995520 - Disclosure - Note 16 - Revenue 1 (Details Textual)",
     "shortName": "Note 16 - Revenue 1 (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "76",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R77": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual",
     "longName": "995521 - Disclosure - Note 16 - Revenue 2 (Details Textual)",
     "shortName": "Note 16 - Revenue 2 (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "77",
     "firstAnchor": {
      "contextRef": "i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2024-01-01",
      "name": "us-gaap:RevenueRemainingPerformanceObligationPercentage",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "2",
      "ancestors": [
       "p",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2024-01-01",
      "name": "us-gaap:RevenueRemainingPerformanceObligationPercentage",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "2",
      "ancestors": [
       "p",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R78": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details",
     "longName": "995522 - Disclosure - Note 16 - Revenue - Net Sales From Continuing Operations by Geographic Region (Details)",
     "shortName": "Note 16 - Revenue - Net Sales From Continuing Operations by Geographic Region (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "78",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31_StatementGeographicalAxis-US",
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R79": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details",
     "longName": "995523 - Disclosure - Note 16 - Revenue - Disaggregation of Revenue (Details)",
     "shortName": "Note 16 - Revenue - Disaggregation of Revenue (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "79",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember",
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:DisaggregationOfRevenueTableTextBlock",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R80": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details",
     "longName": "995524 - Disclosure - Note 16 - Revenue - Contract With Customer Assets and Liabilities (Details)",
     "shortName": "Note 16 - Revenue - Contract With Customer Assets and Liabilities (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "80",
     "firstAnchor": {
      "contextRef": "i_2022-12-31",
      "name": "us-gaap:ContractWithCustomerAssetNet",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2021-12-31",
      "name": "us-gaap:ContractWithCustomerAssetNet",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R81": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual",
     "longName": "995525 - Disclosure - Note 17 - Income Taxes (Details Textual)",
     "shortName": "Note 17 - Income Taxes (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "81",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:TaxCreditCarryforwardAmount",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:TaxCreditCarryforwardAmount",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R82": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details",
     "longName": "995526 - Disclosure - Note 17 - Income Taxes - Income (Loss) from Continuing Operations (Details)",
     "shortName": "Note 17 - Income Taxes - Income (Loss) from Continuing Operations (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "82",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R83": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details",
     "longName": "995527 - Disclosure - Note 17 - Income Taxes - Summary of Components of Income Tax Expense for Continuing Operations (Details)",
     "shortName": "Note 17 - Income Taxes - Summary of Components of Income Tax Expense for Continuing Operations (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "83",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R84": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details",
     "longName": "995528 - Disclosure - Note 17 - Income Taxes - Effective Income Tax Rate Reconciliation (Details)",
     "shortName": "Note 17 - Income Taxes - Effective Income Tax Rate Reconciliation (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "84",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R85": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details",
     "longName": "995529 - Disclosure - Note 17 - Income Taxes - Summary of Current and Noncurrent Deferred Tax Assets and Liabilities (Details)",
     "shortName": "Note 17 - Income Taxes - Summary of Current and Noncurrent Deferred Tax Assets and Liabilities (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "85",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true,
      "unique": true
     }
    },
    "R86": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details",
     "longName": "995530 - Disclosure - Note 17 - Income Taxes - Summary of Changes in Unrecognized Tax Benefits (Details)",
     "shortName": "Note 17 - Income Taxes - Summary of Changes in Unrecognized Tax Benefits (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "86",
     "firstAnchor": {
      "contextRef": "i_2022-12-31",
      "name": "us-gaap:UnrecognizedTaxBenefits",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2020-12-31",
      "name": "us-gaap:UnrecognizedTaxBenefits",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R87": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
     "longName": "995531 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details)",
     "shortName": "Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "87",
     "firstAnchor": {
      "contextRef": "i_2023-12-31",
      "name": "us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember",
      "name": "us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R88": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals",
     "longName": "995532 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details) (Parentheticals)",
     "shortName": "Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details) (Parentheticals)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "parenthetical",
     "menuCat": "Details",
     "order": "88",
     "firstAnchor": null,
     "uniqueAnchor": null
    },
    "R89": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
     "longName": "995533 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Components of Accumulated Other Comprehensive Loss (Details)",
     "shortName": "Note 18 - Accumulated Other Comprehensive Loss - Components of Accumulated Other Comprehensive Loss (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "89",
     "firstAnchor": {
      "contextRef": "i_2022-12-31",
      "name": "us-gaap:StockholdersEquity",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember",
      "name": "us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R90": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
     "longName": "995534 - Disclosure - Note 18 - Accumulated Other Comprehensive Loss - Reclassification of Accumulated Other Comprehensive Loss (Details)",
     "shortName": "Note 18 - Accumulated Other Comprehensive Loss - Reclassification of Accumulated Other Comprehensive Loss (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "90",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:CostOfGoodsAndServicesSold",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember",
      "name": "us-gaap:NetIncomeLoss",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock",
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R91": {
     "role": "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details",
     "longName": "995535 - Disclosure - Note 19 - Segment Information - Information Related to the Operations of the Company's Operating Segments (Details)",
     "shortName": "Note 19 - Segment Information - Information Related to the Operations of the Company's Operating Segments (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "91",
     "firstAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-01-01_2023-12-31",
      "name": "us-gaap:DepreciationAndAmortization",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    },
    "R92": {
     "role": "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details",
     "longName": "995536 - Disclosure - Schedule II - Valuation and Qualifying Accounts - Valuation and Qualifying Accounts (Details)",
     "shortName": "Schedule II - Valuation and Qualifying Accounts - Valuation and Qualifying Accounts (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "92",
     "firstAnchor": {
      "contextRef": "i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember",
      "name": "us-gaap:ValuationAllowancesAndReservesBalance",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:SummaryOfValuationAndQualifyingAccountsTableTextBlock",
       "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2020-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember",
      "name": "us-gaap:ValuationAllowancesAndReservesBalance",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "nwpx:SummaryOfValuationAndQualifyingAccountsTableTextBlock",
       "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "nwpx20231231c_10k.htm",
      "unique": true
     }
    }
   },
   "tag": {
    "us-gaap_AccountingPoliciesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AccountingPoliciesAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accounting Policies [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AccountsPayableCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AccountsPayableCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accounts payable",
        "documentation": "Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r31",
      "r857"
     ]
    },
    "us-gaap_AccruedBonusesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AccruedBonusesCurrent",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AccruedBonusesCurrent",
        "terseLabel": "Accrued Bonuses, Current",
        "documentation": "Carrying value as of the balance sheet date of obligations incurred and payable for incentive compensation awarded to employees and directors or earned by them based on the terms of one or more relevant arrangements. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r34"
     ]
    },
    "nwpx_AccruedLiabilitiesAndOtherLongtermLiabilitiesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "AccruedLiabilitiesAndOtherLongtermLiabilitiesMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued Liabilities and Other Long-term Liabilities [Member]",
        "documentation": "Represents accrued liabilities and other long-term liabilities."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AccruedLiabilitiesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AccruedLiabilitiesCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued liabilities",
        "documentation": "Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r34"
     ]
    },
    "nwpx_AccruedLiabilitiesPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "AccruedLiabilitiesPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued Liabilities [Policy Text Block]",
        "documentation": "Represents information about accrued liabilities Policy."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_AccruedLiabilityMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "AccruedLiabilityMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued Liability [Member]",
        "documentation": "Carrying value of liabilities incurred and payable as of the balance sheet date."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_AccruedPaymentsForRepurchaseOfCommonStock": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "AccruedPaymentsForRepurchaseOfCommonStock",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued payment for repurchase of common stock",
        "documentation": "Represents the total amount of payments accrued for the repurchase of common stock."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AccumulatedDefinedBenefitPlansAdjustmentMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AccumulatedDefinedBenefitPlansAdjustmentMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accumulated Defined Benefit Plans Adjustment Attributable to Parent [Member]",
        "documentation": "Accumulated other comprehensive (income) loss related to defined benefit plans attributable to the parent."
       }
      }
     },
     "auth_ref": [
      "r6",
      "r22",
      "r42",
      "r903",
      "r904",
      "r905"
     ]
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details": {
       "parentTag": "nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
        "negatedLabel": "Less accumulated depreciation and amortization",
        "documentation": "Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services."
       }
      }
     },
     "auth_ref": [
      "r73",
      "r222",
      "r674"
     ]
    },
    "us-gaap_AccumulatedGainLossNetCashFlowHedgeParentMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AccumulatedGainLossNetCashFlowHedgeParentMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accumulated Gain (Loss), Net, Cash Flow Hedge, Parent [Member]",
        "documentation": "Accumulated other comprehensive income (loss) from gain (loss) of derivative instrument designated and qualifying as cash flow hedge included in assessment of hedge effectiveness, attributable to parent."
       }
      }
     },
     "auth_ref": [
      "r238",
      "r246",
      "r247",
      "r598",
      "r823",
      "r903"
     ]
    },
    "nwpx_AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accumulated Other Comprehensive Income (Loss) Cumulative Change in Net Gain (Loss) from Cash Flow Hedge Effect, Tax",
        "documentation": "Tax expense (benefit) included in accumulated other comprehensive income for cash flow hedges."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details": {
       "parentTag": "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax",
        "negatedLabel": "Pension liability adjustment, net of income tax benefit of $482 and $592",
        "documentation": "Amount, after tax, of accumulated other comprehensive (income) loss for defined benefit plan, that has not been recognized in net periodic benefit cost (credit)."
       }
      }
     },
     "auth_ref": [
      "r7",
      "r42",
      "r943"
     ]
    },
    "nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit",
        "terseLabel": "Accumulated Other Comprehensive Income (Loss) Defined Benefit Pension and Other Postretirement Plans Tax Expense (Benefit)",
        "documentation": "Tax expense (benefit) included in accumulated other comprehensive income for defined benefit pension and other postretirement plans."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 1.0
      },
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accumulated other comprehensive loss",
        "totalLabel": "Total",
        "documentation": "Amount, after tax, of accumulated increase (decrease) in equity from transaction and other event and circumstance from nonowner source."
       }
      }
     },
     "auth_ref": [
      "r41",
      "r42",
      "r135",
      "r228",
      "r670",
      "r698",
      "r699"
     ]
    },
    "nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax",
        "terseLabel": "Accumulated Other Comprehensive Income (Loss), Unrecognized Net Actuarial Losses, Net of Tax",
        "documentation": "Represents the amount of unrecognized actuarial loss recognized in accumulated other comprehensive income (loss), net of tax."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AccumulatedOtherComprehensiveIncomeMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "AOCI Attributable to Parent [Member]",
        "documentation": "Accumulated increase (decrease) in equity from transactions and other events and circumstances from non-owner sources, attributable to the parent. Excludes net income (loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners."
       }
      }
     },
     "auth_ref": [
      "r5",
      "r22",
      "r42",
      "r607",
      "r610",
      "r648",
      "r694",
      "r695",
      "r903",
      "r904",
      "r905",
      "r917",
      "r918",
      "r919"
     ]
    },
    "us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Intangible Asset Acquired, Useful Life (Year)",
        "documentation": "Weighted average amortization period of finite-lived intangible assets acquired either individually or as part of a group of assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r150"
     ]
    },
    "us-gaap_AdditionalPaidInCapitalCommonStock": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AdditionalPaidInCapitalCommonStock",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Additional paid-in-capital",
        "documentation": "Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital."
       }
      }
     },
     "auth_ref": [
      "r129"
     ]
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AdditionalPaidInCapitalMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Additional Paid-in Capital [Member]",
        "documentation": "Excess of issue price over par or stated value of the entity's capital stock and amounts received from other transactions involving the entity's stock or stockholders."
       }
      }
     },
     "auth_ref": [
      "r553",
      "r554",
      "r555",
      "r709",
      "r917",
      "r918",
      "r919",
      "r954",
      "r981"
     ]
    },
    "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-based compensation expense",
        "documentation": "Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r79",
      "r80",
      "r517"
     ]
    },
    "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Adjustments to reconcile net income to net cash provided by (used in) operating activities:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AllocatedShareBasedCompensationExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AllocatedShareBasedCompensationExpense",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AllocatedShareBasedCompensationExpense",
        "terseLabel": "Share-based compensation expense",
        "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized."
       }
      }
     },
     "auth_ref": [
      "r548",
      "r560"
     ]
    },
    "us-gaap_AllowanceForCreditLossMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AllowanceForCreditLossMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "SEC Schedule, 12-09, Allowance, Credit Loss [Member]",
        "documentation": "Allowance for credit loss from right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time."
       }
      }
     },
     "auth_ref": [
      "r912",
      "r913",
      "r914",
      "r915",
      "r916"
     ]
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AllowanceForDoubtfulAccountsReceivable",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Allowance for doubtful accounts",
        "documentation": "Amount of allowance for credit loss on accounts receivable."
       }
      }
     },
     "auth_ref": [
      "r229",
      "r332",
      "r336",
      "r337",
      "r338",
      "r973"
     ]
    },
    "dei_AmendmentFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "AmendmentFlag",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Amendment Flag",
        "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AmortizationOfIntangibleAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AmortizationOfIntangibleAssets",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AmortizationOfIntangibleAssets",
        "terseLabel": "Amortization of intangible assets",
        "documentation": "The aggregate expense charged against earnings to allocate the cost of intangible assets (nonphysical assets not used in production) in a systematic and rational manner to the periods expected to benefit from such assets. As a noncash expense, this element is added back to net income when calculating cash provided by or used in operations using the indirect method."
       }
      }
     },
     "auth_ref": [
      "r12",
      "r68",
      "r71"
     ]
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
        "terseLabel": "Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount (in shares)",
        "documentation": "Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented."
       }
      }
     },
     "auth_ref": [
      "r295"
     ]
    },
    "us-gaap_AociLossCashFlowHedgeCumulativeGainLossAfterTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AociLossCashFlowHedgeCumulativeGainLossAfterTax",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details": {
       "parentTag": "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Unrealized gain (loss) on cash flow hedges, net of income tax (expense) benefit",
        "documentation": "Amount, after tax, of accumulated gain (loss) on derivative instrument designated and qualifying as cash flow hedge included in assessment of hedge effectiveness."
       }
      }
     },
     "auth_ref": [
      "r236"
     ]
    },
    "us-gaap_Assets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "Assets",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Total assets",
        "totalLabel": "Total assets",
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events."
       }
      }
     },
     "auth_ref": [
      "r169",
      "r226",
      "r261",
      "r302",
      "r317",
      "r323",
      "r333",
      "r372",
      "r373",
      "r375",
      "r376",
      "r377",
      "r379",
      "r381",
      "r383",
      "r384",
      "r596",
      "r599",
      "r621",
      "r665",
      "r743",
      "r857",
      "r870",
      "r938",
      "r939",
      "r962"
     ]
    },
    "us-gaap_AssetsCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AssetsCurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AssetsCurrent",
        "totalLabel": "Total current assets",
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events."
       }
      }
     },
     "auth_ref": [
      "r217",
      "r232",
      "r261",
      "r333",
      "r372",
      "r373",
      "r375",
      "r376",
      "r377",
      "r379",
      "r381",
      "r383",
      "r384",
      "r596",
      "r599",
      "r621",
      "r857",
      "r938",
      "r939",
      "r962"
     ]
    },
    "us-gaap_AssetsCurrentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AssetsCurrentAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current assets:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AssetsFairValueDisclosure": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AssetsFairValueDisclosure",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Total financial assets",
        "documentation": "Fair value portion of probable future economic benefits obtained or controlled by an entity as a result of past transactions or events."
       }
      }
     },
     "auth_ref": [
      "r111"
     ]
    },
    "nwpx_AtthemarketOfferingMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "AtthemarketOfferingMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "At-the-Market Offering [Member]",
        "documentation": "Represents the At-the-Market Offering"
       }
      }
     },
     "auth_ref": []
    },
    "dei_AuditorFirmId": {
     "xbrltype": "nonemptySequenceNumberItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "AuditorFirmId",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Auditor Firm ID",
        "documentation": "PCAOB issued Audit Firm Identifier"
       }
      }
     },
     "auth_ref": [
      "r874",
      "r875",
      "r876"
     ]
    },
    "dei_AuditorLocation": {
     "xbrltype": "internationalNameItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "AuditorLocation",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Auditor Location"
       }
      }
     },
     "auth_ref": [
      "r874",
      "r875",
      "r876"
     ]
    },
    "dei_AuditorName": {
     "xbrltype": "internationalNameItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "AuditorName",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Auditor Name"
       }
      }
     },
     "auth_ref": [
      "r874",
      "r875",
      "r876"
     ]
    },
    "us-gaap_AwardTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "AwardTypeAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Award Type [Axis]",
        "documentation": "Information by type of award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r519",
      "r520",
      "r521",
      "r523",
      "r524",
      "r525",
      "r526",
      "r527",
      "r528",
      "r529",
      "r530",
      "r531",
      "r532",
      "r533",
      "r534",
      "r535",
      "r536",
      "r537",
      "r538",
      "r539",
      "r540",
      "r543",
      "r544",
      "r545",
      "r546",
      "r547"
     ]
    },
    "nwpx_BacklogMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "BacklogMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Backlog [Member]",
        "documentation": "Represents information related to backlog."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_BalanceSheetLocationAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BalanceSheetLocationAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Balance Sheet Location [Axis]",
        "documentation": "Information by location on balance sheet (statement of financial position)."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_BalanceSheetLocationDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BalanceSheetLocationDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Balance Sheet Location [Domain]",
        "documentation": "Location in the balance sheet (statement of financial position)."
       }
      }
     },
     "auth_ref": [
      "r101",
      "r104"
     ]
    },
    "nwpx_BookOverdrafts": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "BookOverdrafts",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_BookOverdrafts",
        "terseLabel": "Book Overdrafts",
        "documentation": "Outstanding checks in excess of funds on deposit that are shown in account payable."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_BuildingMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BuildingMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Building [Member]",
        "documentation": "Facility held for productive use including, but not limited to, office, production, storage and distribution facilities."
       }
      }
     },
     "auth_ref": [
      "r154"
     ]
    },
    "us-gaap_BusinessAcquisitionAcquireeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessAcquisitionAcquireeDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Business Acquisition, Acquiree [Domain]",
        "documentation": "Identification of the acquiree in a material business combination (or series of individually immaterial business combinations), which may include the name or other type of identification of the acquiree."
       }
      }
     },
     "auth_ref": [
      "r594",
      "r847",
      "r850"
     ]
    },
    "us-gaap_BusinessAcquisitionAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessAcquisitionAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Business Acquisition [Axis]",
        "documentation": "Information by business combination or series of individually immaterial business combinations."
       }
      }
     },
     "auth_ref": [
      "r86",
      "r88",
      "r594",
      "r847",
      "r850"
     ]
    },
    "us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessAcquisitionPercentageOfVotingInterestsAcquired",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired",
        "terseLabel": "Business Acquisition, Percentage of Voting Interests Acquired",
        "documentation": "Percentage of voting equity interests acquired at the acquisition date in the business combination."
       }
      }
     },
     "auth_ref": [
      "r87"
     ]
    },
    "us-gaap_BusinessAcquisitionProFormaInformationTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessAcquisitionProFormaInformationTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Business Acquisition, Pro Forma Information [Table Text Block]",
        "documentation": "Tabular disclosure of pro forma results of operations for a material business acquisition or series of individually immaterial business acquisitions that are material in the aggregate."
       }
      }
     },
     "auth_ref": [
      "r892",
      "r893"
     ]
    },
    "us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessAcquisitionsProFormaNetIncomeLoss",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Net income",
        "label": "us-gaap_BusinessAcquisitionsProFormaNetIncomeLoss",
        "documentation": "The pro forma net Income or Loss for the period as if the business combination or combinations had been completed at the beginning of a period."
       }
      }
     },
     "auth_ref": [
      "r592",
      "r593"
     ]
    },
    "us-gaap_BusinessAcquisitionsProFormaRevenue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessAcquisitionsProFormaRevenue",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Net sales",
        "label": "us-gaap_BusinessAcquisitionsProFormaRevenue",
        "documentation": "The pro forma revenue for a period as if the business combination or combinations had been completed at the beginning of the period."
       }
      }
     },
     "auth_ref": [
      "r592",
      "r593"
     ]
    },
    "us-gaap_BusinessCombinationAcquisitionRelatedCosts": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationAcquisitionRelatedCosts",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_BusinessCombinationAcquisitionRelatedCosts",
        "terseLabel": "Business Combination, Acquisition Related Costs",
        "documentation": "This element represents acquisition-related costs incurred to effect a business combination which costs have been expensed during the period. Such costs include finder's fees; advisory, legal, accounting, valuation, and other professional or consulting fees; general administrative costs, including the costs of maintaining an internal acquisitions department; and may include costs of registering and issuing debt and equity securities."
       }
      }
     },
     "auth_ref": [
      "r85"
     ]
    },
    "us-gaap_BusinessCombinationConsiderationTransferred1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationConsiderationTransferred1",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Total purchase consideration",
        "label": "us-gaap_BusinessCombinationConsiderationTransferred1",
        "documentation": "Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer."
       }
      }
     },
     "auth_ref": [
      "r2",
      "r3",
      "r19"
     ]
    },
    "us-gaap_BusinessCombinationDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Business Combination Disclosure [Text Block]",
        "documentation": "The entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable)."
       }
      }
     },
     "auth_ref": [
      "r163",
      "r595"
     ]
    },
    "us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred",
        "terseLabel": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Consideration Transferred",
        "documentation": "This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to items of consideration transferred in connection with a business combination for which the initial accounting was incomplete."
       }
      }
     },
     "auth_ref": [
      "r91"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
        "totalLabel": "Total assets acquired",
        "documentation": "Amount of assets acquired at the acquisition date."
       }
      }
     },
     "auth_ref": [
      "r90"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Assets"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Cash and cash equivalents",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents",
        "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions, acquired at the acquisition date. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates."
       }
      }
     },
     "auth_ref": [
      "r90"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Prepaid expenses and other",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets",
        "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer, acquired at the acquisition date."
       }
      }
     },
     "auth_ref": [
      "r90"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0,
       "order": 7.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Trade and other receivables",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables",
        "documentation": "Amount due from customers or clients for goods or services, including trade receivables, that have been delivered or sold in the normal course of business, and amounts due from others, including related parties expected to be converted to cash, sold or exchanged within one year or the normal operating cycle, if longer, acquired at the acquisition date."
       }
      }
     },
     "auth_ref": [
      "r90"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Accounts payable",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable",
        "documentation": "Amount of liabilities incurred for goods and services received that are used in an entity's business and related party payables, assumed at the acquisition date."
       }
      }
     },
     "auth_ref": [
      "r90"
     ]
    },
    "nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Accrued liabilities",
        "label": "nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities",
        "documentation": "Amount of accrued liabilities, assumed at the acquisition date."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Deferred income taxes",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets",
        "documentation": "Amount of deferred tax asset attributable to deductible temporary differences and carryforwards acquired at the acquisition date."
       }
      }
     },
     "auth_ref": [
      "r90"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Intangible assets",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill",
        "documentation": "Amount of intangible assets, excluding goodwill, acquired at the acquisition date."
       }
      }
     },
     "auth_ref": [
      "r90"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Inventories",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory",
        "documentation": "The amount of inventory recognized as of the acquisition date."
       }
      }
     },
     "auth_ref": [
      "r89",
      "r90"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
        "totalLabel": "Total liabilities assumed",
        "documentation": "Amount of liabilities assumed at the acquisition date."
       }
      }
     },
     "auth_ref": [
      "r90"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Liabilities"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Operating lease liabilities",
        "label": "nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities",
        "documentation": "Amount of operating lease liabilities assumed at the acquisition date."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Operating lease right-of-use assets",
        "label": "nwpx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets",
        "documentation": "Amount of operating lease right-of-use assets acquired at the acquisition date."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Property and equipment",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment",
        "documentation": "The amount of property, plant, and equipment recognized as of the acquisition date."
       }
      }
     },
     "auth_ref": [
      "r89",
      "r90"
     ]
    },
    "us-gaap_BusinessCombinationsPolicy": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "BusinessCombinationsPolicy",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Business Combinations Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for completed business combinations (purchase method, acquisition method or combination of entities under common control). This accounting policy may include a general discussion of the purchase method or acquisition method of accounting (including for example, the treatment accorded contingent consideration, the identification of assets and liabilities, the purchase price allocation process, how the fair values of acquired assets and liabilities are determined) and the entity's specific application thereof. An entity that acquires another entity in a leveraged buyout transaction generally discloses the accounting policy followed by the acquiring entity in determining the basis used to value its interest in the acquired entity, and the rationale for that accounting policy."
       }
      }
     },
     "auth_ref": [
      "r84"
     ]
    },
    "country_CA": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/country/2023",
     "localname": "CA",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "CANADA"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CapitalAdditionsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CapitalAdditionsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Capital Addition Purchase Commitments [Member]",
        "documentation": "Contractual obligation to increase property, plant and equipment either through construction or future purchases."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CapitalExpendituresIncurredButNotYetPaid": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CapitalExpendituresIncurredButNotYetPaid",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued property and equipment purchases",
        "documentation": "Future cash outflow to pay for purchases of fixed assets that have occurred."
       }
      }
     },
     "auth_ref": [
      "r52",
      "r53",
      "r54"
     ]
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CashAndCashEquivalentsAtCarryingValue",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash and cash equivalents",
        "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation."
       }
      }
     },
     "auth_ref": [
      "r49",
      "r220",
      "r814"
     ]
    },
    "us-gaap_CashAndCashEquivalentsPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CashAndCashEquivalentsPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash and Cash Equivalents, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for cash and cash equivalents, including the policy for determining which items are treated as cash equivalents. Other information that may be disclosed includes (1) the nature of any restrictions on the entity's use of its cash and cash equivalents, (2) whether the entity's cash and cash equivalents are insured or expose the entity to credit risk, (3) the classification of any negative balance accounts (overdrafts), and (4) the carrying basis of cash equivalents (for example, at cost) and whether the carrying amount of cash equivalents approximates fair value."
       }
      }
     },
     "auth_ref": [
      "r50"
     ]
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
        "periodStartLabel": "Cash and cash equivalents, beginning of period",
        "periodEndLabel": "Cash and cash equivalents, end of period",
        "documentation": "Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates."
       }
      }
     },
     "auth_ref": [
      "r49",
      "r143",
      "r257"
     ]
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
        "totalLabel": "Change in cash and cash equivalents",
        "documentation": "Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates."
       }
      }
     },
     "auth_ref": [
      "r4",
      "r143"
     ]
    },
    "us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths",
        "terseLabel": "Cash Flow Hedge Gain (Loss) to be Reclassified within 12 Months",
        "documentation": "The estimated net amount of existing gains or losses on cash flow hedges at the reporting date expected to be reclassified to earnings within the next 12 months."
       }
      }
     },
     "auth_ref": [
      "r110"
     ]
    },
    "us-gaap_CashFlowHedgingMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CashFlowHedgingMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash Flow Hedging [Member]",
        "documentation": "Hedge of the exposure to variability in the cash flows of a recognized asset or liability, or of a forecasted transaction, that is attributable to a particular risk."
       }
      }
     },
     "auth_ref": [
      "r99"
     ]
    },
    "us-gaap_CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CashFlowNoncashInvestingAndFinancingActivitiesDisclosureAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Noncash investing and financing activities:"
       }
      }
     },
     "auth_ref": []
    },
    "dei_CityAreaCode": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "CityAreaCode",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "City Area Code",
        "documentation": "Area code of city"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CommitmentsAndContingencies": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CommitmentsAndContingencies",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Commitments and contingencies (Note 15)",
        "documentation": "Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur."
       }
      }
     },
     "auth_ref": [
      "r38",
      "r118",
      "r667",
      "r729"
     ]
    },
    "us-gaap_CommitmentsAndContingenciesDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CommitmentsAndContingenciesDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Commitments and Contingencies Disclosure [Text Block]",
        "documentation": "The entire disclosure for commitments and contingencies."
       }
      }
     },
     "auth_ref": [
      "r155",
      "r364",
      "r365",
      "r799",
      "r933"
     ]
    },
    "us-gaap_CommonStockCapitalSharesReservedForFutureIssuance": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CommonStockCapitalSharesReservedForFutureIssuance",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CommonStockCapitalSharesReservedForFutureIssuance",
        "terseLabel": "Common Stock, Capital Shares Reserved for Future Issuance (in shares)",
        "documentation": "Aggregate number of common shares reserved for future issuance."
       }
      }
     },
     "auth_ref": [
      "r39"
     ]
    },
    "nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed": {
     "xbrltype": "percentItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed",
        "terseLabel": "Common Stock, Capital Shares Reserved for Future Issuance, Percentage Vesting of Outstanding PSAs Assumed",
        "documentation": "Represents the vesting percentage of PSAs used as an assumption to determine the number of capital shares reserved for future issuance."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CommonStockMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CommonStockMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common Stock [Member]",
        "documentation": "Stock that is subordinate to all other stock of the issuer."
       }
      }
     },
     "auth_ref": [
      "r859",
      "r860",
      "r861",
      "r863",
      "r864",
      "r865",
      "r868",
      "r917",
      "r918",
      "r954",
      "r976",
      "r981"
     ]
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CommonStockParOrStatedValuePerShare",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock, par value (in dollars per share)",
        "terseLabel": "Common Stock, Par or Stated Value Per Share (in dollars per share)",
        "documentation": "Face amount or stated value per share of common stock."
       }
      }
     },
     "auth_ref": [
      "r128"
     ]
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CommonStockSharesAuthorized",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock, shares authorized (in shares)",
        "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws."
       }
      }
     },
     "auth_ref": [
      "r128",
      "r730"
     ]
    },
    "us-gaap_CommonStockSharesIssued": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CommonStockSharesIssued",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock, shares issued (in shares)",
        "documentation": "Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury."
       }
      }
     },
     "auth_ref": [
      "r128"
     ]
    },
    "us-gaap_CommonStockSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CommonStockSharesOutstanding",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock, shares outstanding (in shares)",
        "documentation": "Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation."
       }
      }
     },
     "auth_ref": [
      "r23",
      "r128",
      "r730",
      "r749",
      "r981",
      "r982"
     ]
    },
    "us-gaap_CommonStockValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CommonStockValue",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock, $.01 par value, 15,000,000 shares authorized, 9,985,580 and 9,927,360 shares issued and outstanding as of December 31, 2023 and 2022, respectively",
        "documentation": "Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity."
       }
      }
     },
     "auth_ref": [
      "r128",
      "r669",
      "r857"
     ]
    },
    "nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions": {
     "xbrltype": "percentItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions",
        "terseLabel": "Company Matching Percentage on First Eight Percent of Employee Contributions",
        "documentation": "Company matching percentage on first 8% of employee contributions under defined contribution retirement plan."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ComprehensiveIncomeNetOfTax",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ComprehensiveIncomeNetOfTax",
        "totalLabel": "Comprehensive income",
        "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners."
       }
      }
     },
     "auth_ref": [
      "r43",
      "r241",
      "r243",
      "r250",
      "r661",
      "r679"
     ]
    },
    "us-gaap_ComprehensiveIncomeNoteTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ComprehensiveIncomeNoteTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Comprehensive Income (Loss) Note [Text Block]",
        "documentation": "The entire disclosure for comprehensive income, which includes, but is not limited to, 1) the amount of income tax expense or benefit allocated to each component of other comprehensive income, including reclassification adjustments, 2) the reclassification adjustments for each classification of other comprehensive income and 3) the ending accumulated balances for each component of comprehensive income."
       }
      }
     },
     "auth_ref": [
      "r134",
      "r249",
      "r660",
      "r678"
     ]
    },
    "us-gaap_ComprehensiveIncomePolicyPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ComprehensiveIncomePolicyPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Comprehensive Income, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for comprehensive income."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ConcentrationRiskBenchmarkDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ConcentrationRiskBenchmarkDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Concentration Risk Benchmark [Domain]",
        "documentation": "The denominator in a calculation of a disclosed concentration risk percentage."
       }
      }
     },
     "auth_ref": [
      "r57",
      "r59",
      "r112",
      "r113",
      "r331",
      "r798"
     ]
    },
    "us-gaap_ConcentrationRiskByBenchmarkAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ConcentrationRiskByBenchmarkAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Concentration Risk Benchmark [Axis]",
        "documentation": "Information by benchmark of concentration risk."
       }
      }
     },
     "auth_ref": [
      "r57",
      "r59",
      "r112",
      "r113",
      "r331",
      "r700",
      "r798"
     ]
    },
    "us-gaap_ConcentrationRiskByTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ConcentrationRiskByTypeAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Concentration Risk Type [Axis]",
        "documentation": "Information by type of concentration risk, for example, but not limited to, asset, liability, net assets, geographic, customer, employees, supplier, lender."
       }
      }
     },
     "auth_ref": [
      "r57",
      "r59",
      "r112",
      "r113",
      "r331",
      "r798",
      "r891"
     ]
    },
    "us-gaap_ConcentrationRiskCreditRisk": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ConcentrationRiskCreditRisk",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Concentration Risk, Credit Risk, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for credit risk."
       }
      }
     },
     "auth_ref": [
      "r119",
      "r182"
     ]
    },
    "us-gaap_ConcentrationRiskPercentage1": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ConcentrationRiskPercentage1",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ConcentrationRiskPercentage1",
        "terseLabel": "Concentration Risk, Percentage",
        "documentation": "For an entity that discloses a concentration risk in relation to quantitative amount, which serves as the \"benchmark\" (or denominator) in the equation, this concept represents the concentration percentage derived from the division."
       }
      }
     },
     "auth_ref": [
      "r57",
      "r59",
      "r112",
      "r113",
      "r331"
     ]
    },
    "us-gaap_ConcentrationRiskTypeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ConcentrationRiskTypeDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Concentration Risk Type [Domain]",
        "documentation": "For an entity that discloses a concentration risk as a percentage of some financial balance or benchmark, identifies the type (for example, asset, liability, net assets, geographic, customer, employees, supplier, lender) of the concentration."
       }
      }
     },
     "auth_ref": [
      "r57",
      "r59",
      "r112",
      "r113",
      "r331",
      "r798"
     ]
    },
    "srt_ConsolidationItemsAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "ConsolidationItemsAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidation Items [Axis]",
        "documentation": "Information by components, eliminations, non-segment corporate-level activity and reconciling items used in consolidating a parent entity and its subsidiaries or its operating segments."
       }
      }
     },
     "auth_ref": [
      "r204",
      "r205",
      "r206",
      "r207",
      "r208",
      "r209",
      "r210",
      "r211",
      "r212",
      "r267",
      "r304",
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r321",
      "r325",
      "r372",
      "r373",
      "r374",
      "r375",
      "r377",
      "r378",
      "r380",
      "r382",
      "r383",
      "r898",
      "r899",
      "r938",
      "r939"
     ]
    },
    "srt_ConsolidationItemsDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "ConsolidationItemsDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidation Items [Domain]",
        "documentation": "Components, elimination, non-segment corporate-level activity and reconciling items used in consolidating a parent entity and its subsidiaries or its operating segments."
       }
      }
     },
     "auth_ref": [
      "r204",
      "r205",
      "r206",
      "r207",
      "r208",
      "r209",
      "r210",
      "r211",
      "r212",
      "r267",
      "r304",
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r321",
      "r325",
      "r372",
      "r373",
      "r374",
      "r375",
      "r377",
      "r378",
      "r380",
      "r382",
      "r383",
      "r898",
      "r899",
      "r938",
      "r939"
     ]
    },
    "us-gaap_ConsolidationPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ConsolidationPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidation, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy regarding (1) the principles it follows in consolidating or combining the separate financial statements, including the principles followed in determining the inclusion or exclusion of subsidiaries or other entities in the consolidated or combined financial statements and (2) its treatment of interests (for example, common stock, a partnership interest or other means of exerting influence) in other entities, for example consolidation or use of the equity or cost methods of accounting. The accounting policy may also address the accounting treatment for intercompany accounts and transactions, noncontrolling interest, and the income statement treatment in consolidation for issuances of stock by a subsidiary."
       }
      }
     },
     "auth_ref": [
      "r96",
      "r824"
     ]
    },
    "us-gaap_ConstructionInProgressMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ConstructionInProgressMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Construction in Progress [Member]",
        "documentation": "Structure or a modification to a structure under construction. Includes recently completed structures or modifications to structures that have not been placed into service."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_ContractAssetsAndLiabilitiesPolicyPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ContractAssetsAndLiabilitiesPolicyPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Contract Assets and Liabilities, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for contract assets and liabilities."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ContractWithCustomerAssetAndLiabilityTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block]",
        "documentation": "Tabular disclosure of receivable, contract asset, and contract liability from contract with customer. Includes, but is not limited to, change in contract asset and contract liability."
       }
      }
     },
     "auth_ref": [
      "r941"
     ]
    },
    "nwpx_ContractWithCustomerAssetBillings": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ContractWithCustomerAssetBillings",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Contract With Customer, Asset, Billings",
        "documentation": "Represents billings portion of the contract with customer, asset."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ContractWithCustomerAssetNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ContractWithCustomerAssetNet",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ContractWithCustomerAssetNet",
        "periodStartLabel": "Balance, beginning of year",
        "periodEndLabel": "Balance, end of year",
        "documentation": "Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time."
       }
      }
     },
     "auth_ref": [
      "r426",
      "r428",
      "r439"
     ]
    },
    "us-gaap_ContractWithCustomerAssetNetCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ContractWithCustomerAssetNetCurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Contract assets",
        "documentation": "Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time, classified as current."
       }
      }
     },
     "auth_ref": [
      "r426",
      "r428",
      "r439"
     ]
    },
    "nwpx_ContractWithCustomerAssetOther": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ContractWithCustomerAssetOther",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Contract With Customer, Asset, Other",
        "documentation": "Represents the other portion of contract with customer, asset."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue recognized in advance of billings",
        "documentation": "Represents the revenue recognized in advance of billings portion of the contract with customer, asset."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ContractWithCustomerLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ContractWithCustomerLiability",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ContractWithCustomerLiability",
        "periodStartLabel": "Balance, beginning of year",
        "periodEndLabel": "Balance, end of year",
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable."
       }
      }
     },
     "auth_ref": [
      "r426",
      "r427",
      "r439"
     ]
    },
    "nwpx_ContractWithCustomerLiabilityBillings": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ContractWithCustomerLiabilityBillings",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Contract With Customer, Liability, Billings",
        "documentation": "Represents the billings portion of the contract with customer liability."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ContractWithCustomerLiabilityCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ContractWithCustomerLiabilityCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Contract liabilities",
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current."
       }
      }
     },
     "auth_ref": [
      "r426",
      "r427",
      "r439"
     ]
    },
    "nwpx_ContractWithCustomerLiabilityOther": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ContractWithCustomerLiabilityOther",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Contract With Customer, Liability, Other",
        "documentation": "Represents the other portion of contract with customer, liability."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ContractWithCustomerLiabilityRevenueRecognized": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ContractWithCustomerLiabilityRevenueRecognized",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue recognized",
        "documentation": "Amount of revenue recognized that was previously included in balance of obligation to transfer good or service to customer for which consideration from customer has been received or is due."
       }
      }
     },
     "auth_ref": [
      "r440"
     ]
    },
    "us-gaap_CorporateNonSegmentMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CorporateNonSegmentMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Corporate, Non-Segment [Member]",
        "documentation": "Corporate headquarters or functional department that may not earn revenues or may earn revenues that are only incidental to the activities of the entity and is not considered an operating segment."
       }
      }
     },
     "auth_ref": [
      "r26",
      "r316",
      "r317",
      "r318",
      "r319",
      "r325",
      "r922"
     ]
    },
    "us-gaap_CostOfGoodsAndServicesSold": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CostOfGoodsAndServicesSold",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations": {
       "parentTag": "us-gaap_GrossProfit",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cost of sales",
        "documentation": "The aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities."
       }
      }
     },
     "auth_ref": [
      "r139",
      "r656"
     ]
    },
    "us-gaap_CostOfSalesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CostOfSalesMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cost of Sales [Member]",
        "documentation": "Primary financial statement caption encompassing cost of sales."
       }
      }
     },
     "auth_ref": []
    },
    "srt_CounterpartyNameAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "CounterpartyNameAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Counterparty Name [Axis]",
        "documentation": "Information by name of counterparty. A counterparty is the other party that participates in a financial transaction. Examples include, but not limited to, the name of the financial institution."
       }
      }
     },
     "auth_ref": [
      "r213",
      "r264",
      "r265",
      "r389",
      "r414",
      "r649",
      "r820",
      "r822"
     ]
    },
    "us-gaap_CreditFacilityAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CreditFacilityAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Credit Facility [Axis]",
        "documentation": "Information by type of credit facility. Credit facilities provide capital to borrowers without the need to structure a loan for each borrowing."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CreditFacilityDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CreditFacilityDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Credit Facility [Domain]",
        "documentation": "Type of credit facility. Credit facilities provide capital to borrowers without the need to structure a loan for each borrowing."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CurrentFederalTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CurrentFederalTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details": {
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CurrentFederalTaxExpenseBenefit",
        "terseLabel": "Federal",
        "documentation": "Amount of current federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current national tax expense (benefit) for non-US (United States of America) jurisdiction."
       }
      }
     },
     "auth_ref": [
      "r897",
      "r911",
      "r951"
     ]
    },
    "dei_CurrentFiscalYearEndDate": {
     "xbrltype": "gMonthDayItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "CurrentFiscalYearEndDate",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current Fiscal Year End Date",
        "documentation": "End date of current fiscal year in the format --MM-DD."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CurrentForeignTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CurrentForeignTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details": {
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CurrentForeignTaxExpenseBenefit",
        "terseLabel": "Foreign",
        "documentation": "Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations."
       }
      }
     },
     "auth_ref": [
      "r897",
      "r911"
     ]
    },
    "us-gaap_CurrentIncomeTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CurrentIncomeTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details": {
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CurrentIncomeTaxExpenseBenefit",
        "totalLabel": "Total current income tax expense",
        "documentation": "Amount of current income tax expense (benefit) pertaining to taxable income (loss) from continuing operations."
       }
      }
     },
     "auth_ref": [
      "r162",
      "r581",
      "r587",
      "r911"
     ]
    },
    "us-gaap_CurrentStateAndLocalTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CurrentStateAndLocalTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details": {
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CurrentStateAndLocalTaxExpenseBenefit",
        "terseLabel": "State",
        "documentation": "Amount of current state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction."
       }
      }
     },
     "auth_ref": [
      "r897",
      "r911",
      "r951"
     ]
    },
    "us-gaap_CustomerConcentrationRiskMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CustomerConcentrationRiskMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Customer Concentration Risk [Member]",
        "documentation": "Reflects the percentage that revenues in the period from one or more significant customers is to net revenues, as defined by the entity, such as total net revenues, product line revenues, segment revenues. The risk is the materially adverse effects of loss of a significant customer."
       }
      }
     },
     "auth_ref": [
      "r58",
      "r331"
     ]
    },
    "us-gaap_CustomerRelationshipsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "CustomerRelationshipsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Customer Relationships [Member]",
        "documentation": "Customer relationship that exists between an entity and its customer, for example, but not limited to, tenant relationships."
       }
      }
     },
     "auth_ref": [
      "r93"
     ]
    },
    "us-gaap_DebtDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DebtDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Debt Disclosure [Text Block]",
        "documentation": "The entire disclosure for information about short-term and long-term debt arrangements, which includes amounts of borrowings under each line of credit, note payable, commercial paper issue, bonds indenture, debenture issue, own-share lending arrangements and any other contractual agreement to repay funds, and about the underlying arrangements, rationale for a classification as long-term, including repayment terms, interest rates, collateral provided, restrictions on use of assets and activities, whether or not in compliance with debt covenants, and other matters important to users of the financial statements, such as the effects of refinancing and noncompliance with debt covenants."
       }
      }
     },
     "auth_ref": [
      "r156",
      "r259",
      "r385",
      "r391",
      "r392",
      "r393",
      "r394",
      "r395",
      "r396",
      "r401",
      "r408",
      "r409",
      "r410"
     ]
    },
    "us-gaap_DebtInstrumentAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DebtInstrumentAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Debt Instrument [Axis]",
        "documentation": "Information by type of debt instrument, including, but not limited to, draws against credit facilities."
       }
      }
     },
     "auth_ref": [
      "r30",
      "r122",
      "r123",
      "r170",
      "r173",
      "r267",
      "r386",
      "r387",
      "r388",
      "r389",
      "r390",
      "r392",
      "r397",
      "r398",
      "r399",
      "r400",
      "r402",
      "r403",
      "r404",
      "r405",
      "r406",
      "r407",
      "r630",
      "r834",
      "r835",
      "r836",
      "r837",
      "r838",
      "r909"
     ]
    },
    "us-gaap_DebtInstrumentBasisSpreadOnVariableRate1": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DebtInstrumentBasisSpreadOnVariableRate1",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DebtInstrumentBasisSpreadOnVariableRate1",
        "terseLabel": "Debt Instrument, Basis Spread on Variable Rate",
        "documentation": "Percentage points added to the reference rate to compute the variable rate on the debt instrument."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization",
        "terseLabel": "Debt Instrument, Covenant, Minimum Consolidated Earnings Before Interest, Taxes, Depreciation, and Amortization",
        "documentation": "The minimum amount of consolidated earnings before interest, taxes, depreciation, and amortization pursuant to the debt agreement."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_DebtInstrumentCovenantMinimumEbitda": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "DebtInstrumentCovenantMinimumEbitda",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_DebtInstrumentCovenantMinimumEbitda",
        "terseLabel": "Debt Instrument, Covenant, Minimum EBITDA",
        "documentation": "Represents the minimum amount of earnings before interest, taxes, depreciation and amortization as part of a debt covenant."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DebtInstrumentFaceAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DebtInstrumentFaceAmount",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DebtInstrumentFaceAmount",
        "terseLabel": "Debt Instrument, Face Amount",
        "documentation": "Face (par) amount of debt instrument at time of issuance."
       }
      }
     },
     "auth_ref": [
      "r115",
      "r117",
      "r386",
      "r630",
      "r835",
      "r836"
     ]
    },
    "us-gaap_DebtInstrumentNameDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DebtInstrumentNameDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Debt Instrument, Name [Domain]",
        "documentation": "The name for the particular debt instrument or borrowing that distinguishes it from other debt instruments or borrowings, including draws against credit facilities."
       }
      }
     },
     "auth_ref": [
      "r36",
      "r267",
      "r386",
      "r387",
      "r388",
      "r389",
      "r390",
      "r392",
      "r397",
      "r398",
      "r399",
      "r400",
      "r402",
      "r403",
      "r404",
      "r405",
      "r406",
      "r407",
      "r630",
      "r834",
      "r835",
      "r836",
      "r837",
      "r838",
      "r909"
     ]
    },
    "us-gaap_DebtWeightedAverageInterestRate": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DebtWeightedAverageInterestRate",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DebtWeightedAverageInterestRate",
        "terseLabel": "Debt, Weighted Average Interest Rate",
        "documentation": "Weighted average interest rate of debt outstanding."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredCompensationLiabilityClassifiedNoncurrent",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent",
        "terseLabel": "Deferred Compensation Liability, Classified, Noncurrent",
        "documentation": "Aggregate carrying value as of the balance sheet date of the liabilities for all deferred compensation arrangements payable beyond one year (or the operating cycle, if longer)."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredCompensationPlanAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredCompensationPlanAssets",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred compensation plan",
        "documentation": "Carrying amount as of the balance sheet date of assets held under deferred compensation agreements."
       }
      }
     },
     "auth_ref": [
      "r901"
     ]
    },
    "nwpx_DeferredCompensationPlanMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "DeferredCompensationPlanMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred Compensation Plan [Member]",
        "documentation": "Represents deferred compensation plan."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredFederalIncomeTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredFederalIncomeTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details": {
       "parentTag": "nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredFederalIncomeTaxExpenseBenefit",
        "terseLabel": "Federal",
        "documentation": "Amount of deferred federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred national tax expense (benefit) for non-US (United States of America) jurisdiction."
       }
      }
     },
     "auth_ref": [
      "r911",
      "r950",
      "r951"
     ]
    },
    "nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details": {
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit",
        "totalLabel": "Total deferred income tax expense (benefit)",
        "documentation": "Amount of deferred state, local, federal and foreign income tax expense (benefit) pertaining to income (loss) from continuing operations."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredForeignIncomeTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredForeignIncomeTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details": {
       "parentTag": "nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredForeignIncomeTaxExpenseBenefit",
        "terseLabel": "Foreign",
        "documentation": "Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations."
       }
      }
     },
     "auth_ref": [
      "r162",
      "r911",
      "r950"
     ]
    },
    "us-gaap_DeferredIncomeTaxAssetsNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredIncomeTaxAssetsNet",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred income tax assets, included in Other assets",
        "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting."
       }
      }
     },
     "auth_ref": [
      "r565",
      "r566"
     ]
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredIncomeTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 12.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred income taxes",
        "documentation": "Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations."
       }
      }
     },
     "auth_ref": [
      "r12",
      "r162",
      "r190",
      "r586",
      "r587",
      "r911"
     ]
    },
    "us-gaap_DeferredIncomeTaxLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredIncomeTaxLiabilities",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxLiabilities",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredIncomeTaxLiabilities",
        "negatedTotalLabel": "Deferred Tax Liabilities, Gross",
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences."
       }
      }
     },
     "auth_ref": [
      "r125",
      "r126",
      "r171",
      "r575"
     ]
    },
    "us-gaap_DeferredIncomeTaxLiabilitiesNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredIncomeTaxLiabilitiesNet",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredIncomeTaxLiabilitiesNet",
        "terseLabel": "Deferred income taxes",
        "negatedLabel": "Deferred income taxes",
        "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting."
       }
      }
     },
     "auth_ref": [
      "r565",
      "r566",
      "r666"
     ]
    },
    "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredStateAndLocalIncomeTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details": {
       "parentTag": "nwpx_DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit",
        "terseLabel": "State",
        "documentation": "Amount of deferred state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction."
       }
      }
     },
     "auth_ref": [
      "r911",
      "r950",
      "r951"
     ]
    },
    "nwpx_DeferredTaxAssetContractAssetsNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "DeferredTaxAssetContractAssetsNet",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_DeferredTaxAssetContractAssetsNet",
        "terseLabel": "Contract assets, net",
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to contract assets, net."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_DeferredTaxAssetTradeReceivableNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "DeferredTaxAssetTradeReceivableNet",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_DeferredTaxAssetTradeReceivableNet",
        "terseLabel": "Trade receivable, net",
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to trade receivables, net."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredTaxAssetsGross": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxAssetsGross",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxAssetsGross",
        "totalLabel": "Deferred Tax Assets, Gross",
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards."
       }
      }
     },
     "auth_ref": [
      "r576"
     ]
    },
    "us-gaap_DeferredTaxAssetsInventory": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxAssetsInventory",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxAssetsInventory",
        "terseLabel": "Inventories",
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from inventory."
       }
      }
     },
     "auth_ref": [
      "r83",
      "r949"
     ]
    },
    "us-gaap_DeferredTaxAssetsNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxAssetsNet",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxLiabilities",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxAssetsNet",
        "totalLabel": "Deferred Tax Assets, Net of Valuation Allowance",
        "documentation": "Amount after allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards."
       }
      }
     },
     "auth_ref": [
      "r948"
     ]
    },
    "us-gaap_DeferredTaxAssetsOperatingLossCarryforwards": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxAssetsOperatingLossCarryforwards",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxAssetsOperatingLossCarryforwards",
        "terseLabel": "Net operating loss carryforwards",
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards."
       }
      }
     },
     "auth_ref": [
      "r83",
      "r949"
     ]
    },
    "us-gaap_DeferredTaxAssetsOther": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxAssetsOther",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxAssetsOther",
        "terseLabel": "Other",
        "documentation": "Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences, classified as other."
       }
      }
     },
     "auth_ref": [
      "r83",
      "r949"
     ]
    },
    "us-gaap_DeferredTaxAssetsTaxCreditCarryforwards": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxAssetsTaxCreditCarryforwards",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxAssetsTaxCreditCarryforwards",
        "terseLabel": "Tax credit carryforwards",
        "documentation": "Amount, before allocation of a valuation allowances, of deferred tax assets attributable to deductible tax credit carryforwards including, but not limited to, research, foreign, general business, alternative minimum tax, and other deductible tax credit carryforwards."
       }
      }
     },
     "auth_ref": [
      "r82",
      "r83",
      "r949"
     ]
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits",
        "terseLabel": "Accrued employee benefits",
        "documentation": "Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences from employee benefits, classified as other."
       }
      }
     },
     "auth_ref": [
      "r83",
      "r949"
     ]
    },
    "us-gaap_DeferredTaxAssetsValuationAllowance": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxAssetsValuationAllowance",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxAssetsValuationAllowance",
        "negatedTerseLabel": "Valuation allowance",
        "documentation": "Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized."
       }
      }
     },
     "auth_ref": [
      "r577"
     ]
    },
    "us-gaap_DeferredTaxLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxLiabilities",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxLiabilities",
        "negatedLabel": "Net deferred income tax liabilities",
        "negatedTotalLabel": "Net deferred income tax liabilities",
        "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences without jurisdictional netting."
       }
      }
     },
     "auth_ref": [
      "r81",
      "r948"
     ]
    },
    "us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill",
        "negatedLabel": "Goodwill",
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from goodwill."
       }
      }
     },
     "auth_ref": [
      "r83",
      "r94",
      "r95",
      "r949"
     ]
    },
    "us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets",
        "negatedTerseLabel": "Intangible assets",
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from intangible assets other than goodwill."
       }
      }
     },
     "auth_ref": [
      "r83",
      "r949"
     ]
    },
    "us-gaap_DeferredTaxLiabilitiesPrepaidExpenses": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxLiabilitiesPrepaidExpenses",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxLiabilitiesPrepaidExpenses",
        "negatedTerseLabel": "Prepaid expenses",
        "documentation": "Amount of deferred tax consequences attributable to taxable temporary differences derived from prepaid expenses."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DeferredTaxLiabilitiesPropertyPlantAndEquipment",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment",
        "negatedTerseLabel": "Property and equipment",
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from property, plant, and equipment."
       }
      }
     },
     "auth_ref": [
      "r83",
      "r949"
     ]
    },
    "us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DefinedBenefitPlanAccumulatedBenefitObligation",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DefinedBenefitPlanAccumulatedBenefitObligation",
        "terseLabel": "Defined Benefit Plan, Accumulated Benefit Obligation",
        "documentation": "Amount of actuarial present value of benefits attributed to employee service rendered, excluding assumptions about future compensation level."
       }
      }
     },
     "auth_ref": [
      "r475"
     ]
    },
    "us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent",
        "terseLabel": "Assets for Plan Benefits, Defined Benefit Plan",
        "documentation": "Amount of asset, recognized in statement of financial position, for overfunded defined benefit pension and other postretirement plans."
       }
      }
     },
     "auth_ref": [
      "r168",
      "r443",
      "r444",
      "r465",
      "r742",
      "r845",
      "r970"
     ]
    },
    "us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate",
        "terseLabel": "Defined Benefit Plan, Assumptions Used Calculating Benefit Obligation, Discount Rate",
        "documentation": "Weighted average rate for present value of future retirement benefits cash flows, used to determine benefit obligation of defined benefit plan."
       }
      }
     },
     "auth_ref": [
      "r488"
     ]
    },
    "us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets",
        "terseLabel": "Defined Benefit Plan, Assumptions Used Calculating Net Periodic Benefit Cost, Expected Long-Term Rate of Return on Plan Assets",
        "documentation": "Weighted average rate of return on plan assets, reflecting average rate of earnings expected on existing plan assets and expected contributions, used to determine net periodic benefit cost of defined benefit plan."
       }
      }
     },
     "auth_ref": [
      "r489",
      "r508"
     ]
    },
    "us-gaap_DefinedBenefitPlanFairValueOfPlanAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DefinedBenefitPlanFairValueOfPlanAssets",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DefinedBenefitPlanFairValueOfPlanAssets",
        "terseLabel": "Defined Benefit Plan, Plan Assets, Amount",
        "documentation": "Amount of asset segregated and restricted to provide benefit under defined benefit plan. Asset includes, but is not limited to, stock, bond, other investment, earning from investment, and contribution by employer and employee."
       }
      }
     },
     "auth_ref": [
      "r456",
      "r467",
      "r469",
      "r470",
      "r843",
      "r844",
      "r845"
     ]
    },
    "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DefinedBenefitPlanNetPeriodicBenefitCost",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost",
        "terseLabel": "Defined Benefit Plan, Net Periodic Benefit Cost (Credit)",
        "documentation": "Amount of net periodic benefit cost (credit) for defined benefit plan."
       }
      }
     },
     "auth_ref": [
      "r478",
      "r499",
      "r845",
      "r846"
     ]
    },
    "nwpx_DefinedContributionPlanMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "DefinedContributionPlanMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Defined Contribution Plan [Member]",
        "documentation": "Information pertaining to the Defined Contribution Plan."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DepreciationAndAmortization": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DepreciationAndAmortization",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Depreciation and amortization",
        "documentation": "The current period expense charged against earnings on long-lived, physical assets not used in production, and which are not intended for resale, to allocate or recognize the cost of such assets over their useful lives; or to record the reduction in book value of an intangible asset over the benefit period of such asset; or to reflect consumption during the period of an asset that is not used in production."
       }
      }
     },
     "auth_ref": [
      "r12",
      "r72"
     ]
    },
    "nwpx_DepreciationAndFinanceLeaseRightOfUseAssetAmortization": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "DepreciationAndFinanceLeaseRightOfUseAssetAmortization",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Depreciation and finance lease amortization",
        "documentation": "The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives and amount of amortization expense attributable to right-of-use asset from finance lease."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DerivativeAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DerivativeAssets",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DerivativeAssets",
        "terseLabel": "Derivative assets",
        "documentation": "Fair value, after the effects of master netting arrangements, of a financial asset or other contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes assets not subject to a master netting arrangement and not elected to be offset."
       }
      }
     },
     "auth_ref": [
      "r233",
      "r234",
      "r620",
      "r711",
      "r712",
      "r713",
      "r714",
      "r715",
      "r717",
      "r718",
      "r719",
      "r720",
      "r721",
      "r736",
      "r737",
      "r784",
      "r787",
      "r790",
      "r791",
      "r792",
      "r793",
      "r822",
      "r861",
      "r977"
     ]
    },
    "us-gaap_DerivativeContractTypeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DerivativeContractTypeDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Derivative Contract [Domain]",
        "documentation": "Financial instrument or contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset."
       }
      }
     },
     "auth_ref": [
      "r719",
      "r721",
      "r735",
      "r736",
      "r737",
      "r738",
      "r739",
      "r740",
      "r741",
      "r744",
      "r745",
      "r746",
      "r747",
      "r759",
      "r760",
      "r761",
      "r762",
      "r765",
      "r766",
      "r767",
      "r768",
      "r784",
      "r785",
      "r790",
      "r792",
      "r859",
      "r861"
     ]
    },
    "us-gaap_DerivativeFixedInterestRate": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DerivativeFixedInterestRate",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DerivativeFixedInterestRate",
        "terseLabel": "Derivative, Fixed Interest Rate",
        "documentation": "Fixed interest rate related to the interest rate derivative."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DerivativeInstrumentRiskAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DerivativeInstrumentRiskAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Derivative Instrument [Axis]",
        "documentation": "Information by type of derivative contract."
       }
      }
     },
     "auth_ref": [
      "r102",
      "r103",
      "r105",
      "r107",
      "r719",
      "r721",
      "r735",
      "r736",
      "r737",
      "r738",
      "r739",
      "r740",
      "r741",
      "r744",
      "r745",
      "r746",
      "r747",
      "r759",
      "r760",
      "r761",
      "r762",
      "r765",
      "r766",
      "r767",
      "r768",
      "r784",
      "r785",
      "r790",
      "r792",
      "r822",
      "r859",
      "r861"
     ]
    },
    "us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Derivative Instruments and Hedging Activities Disclosure [Text Block]",
        "documentation": "The entire disclosure for derivative instruments and hedging activities including, but not limited to, risk management strategies, non-hedging derivative instruments, assets, liabilities, revenue and expenses, and methodologies and assumptions used in determining the amounts."
       }
      }
     },
     "auth_ref": [
      "r167",
      "r604",
      "r612"
     ]
    },
    "us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DerivativeInstrumentsGainLossByHedgingRelationshipAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Hedging Relationship [Axis]",
        "documentation": "Information by type of hedging relationship."
       }
      }
     },
     "auth_ref": [
      "r24",
      "r102",
      "r105"
     ]
    },
    "us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Gains (losses) recognized on derivatives",
        "label": "us-gaap_DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet",
        "documentation": "Amount of realized and unrealized gain (loss) of derivative instruments not designated or qualifying as hedging instruments."
       }
      }
     },
     "auth_ref": [
      "r106",
      "r895"
     ]
    },
    "us-gaap_DerivativeLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DerivativeLiabilities",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DerivativeLiabilities",
        "negatedTerseLabel": "Foreign currency forward contracts",
        "documentation": "Fair value, after the effects of master netting arrangements, of a financial liability or contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes liabilities not subject to a master netting arrangement and not elected to be offset."
       }
      }
     },
     "auth_ref": [
      "r233",
      "r234",
      "r620",
      "r711",
      "r712",
      "r713",
      "r714",
      "r717",
      "r718",
      "r719",
      "r720",
      "r721",
      "r744",
      "r746",
      "r747",
      "r785",
      "r786",
      "r787",
      "r790",
      "r791",
      "r792",
      "r793",
      "r822",
      "r977"
     ]
    },
    "us-gaap_DerivativeNotionalAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DerivativeNotionalAmount",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DerivativeNotionalAmount",
        "terseLabel": "Derivative, Notional Amount",
        "documentation": "Nominal or face amount used to calculate payment on derivative."
       }
      }
     },
     "auth_ref": [
      "r952",
      "r953"
     ]
    },
    "us-gaap_DerivativesPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DerivativesPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Derivatives, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for its derivative instruments and hedging activities."
       }
      }
     },
     "auth_ref": [
      "r24",
      "r97",
      "r98",
      "r100",
      "r108",
      "r266"
     ]
    },
    "us-gaap_DesignatedAsHedgingInstrumentMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DesignatedAsHedgingInstrumentMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Designated as Hedging Instrument [Member]",
        "documentation": "Derivative instrument designated as hedging instrument under Generally Accepted Accounting Principles (GAAP)."
       }
      }
     },
     "auth_ref": [
      "r24"
     ]
    },
    "srt_DirectorMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "DirectorMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Director [Member]",
        "documentation": "Person serving on board of directors."
       }
      }
     },
     "auth_ref": [
      "r923",
      "r978"
     ]
    },
    "us-gaap_DisaggregationOfRevenueTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DisaggregationOfRevenueTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Disaggregation of Revenue [Table Text Block]",
        "documentation": "Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor."
       }
      }
     },
     "auth_ref": [
      "r942"
     ]
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Payment Arrangement [Text Block]",
        "documentation": "The entire disclosure for share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r516",
      "r518",
      "r549",
      "r550",
      "r552",
      "r854"
     ]
    },
    "us-gaap_DisclosureTextBlockAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DisclosureTextBlockAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DisclosureTextBlockAbstract",
        "terseLabel": "Notes to Financial Statements"
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentAnnualReport": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentAnnualReport",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Annual Report",
        "documentation": "Boolean flag that is true only for a form used as an annual report."
       }
      }
     },
     "auth_ref": [
      "r874",
      "r875",
      "r876"
     ]
    },
    "dei_DocumentFinStmtErrorCorrectionFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentFinStmtErrorCorrectionFlag",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Financial Statement Error Correction [Flag]",
        "documentation": "Indicates whether any of the financial statement period in the filing include a restatement due to error correction."
       }
      }
     },
     "auth_ref": [
      "r874",
      "r875",
      "r876",
      "r878"
     ]
    },
    "dei_DocumentFiscalPeriodFocus": {
     "xbrltype": "fiscalPeriodItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentFiscalPeriodFocus",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Fiscal Period Focus",
        "documentation": "Fiscal period values are FY, Q1, Q2, and Q3.  1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentFiscalYearFocus": {
     "xbrltype": "gYearItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentFiscalYearFocus",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Fiscal Year Focus",
        "documentation": "This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentInformationLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentInformationLineItems",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Information [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentInformationTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentInformationTable",
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Information [Table]",
        "documentation": "Container to support the formal attachment of each official or unofficial, public or private document as part of a submission package."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentPeriodEndDate": {
     "xbrltype": "dateItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentPeriodEndDate",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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_DocumentTransitionReport": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentTransitionReport",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Transition Report",
        "documentation": "Boolean flag that is true only for a form used as a transition report."
       }
      }
     },
     "auth_ref": [
      "r877"
     ]
    },
    "dei_DocumentType": {
     "xbrltype": "submissionTypeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "DocumentType",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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": []
    },
    "us-gaap_DomesticCountryMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "DomesticCountryMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Domestic Tax Authority [Member]",
        "documentation": "Designated tax department of the government that is entitled to levy and collect income taxes from the entity in its country of domicile."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_EarningsPerShareAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "EarningsPerShareAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net income per common share",
        "terseLabel": "Net income per share:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_EarningsPerShareBasic": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "EarningsPerShareBasic",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Basic (in dollars per share)",
        "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r251",
      "r280",
      "r281",
      "r282",
      "r283",
      "r284",
      "r288",
      "r290",
      "r292",
      "r293",
      "r294",
      "r296",
      "r615",
      "r616",
      "r662",
      "r680",
      "r827"
     ]
    },
    "us-gaap_EarningsPerShareDiluted": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "EarningsPerShareDiluted",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Diluted (in dollars per share)",
        "documentation": "The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r251",
      "r280",
      "r281",
      "r282",
      "r283",
      "r284",
      "r290",
      "r292",
      "r293",
      "r294",
      "r296",
      "r615",
      "r616",
      "r662",
      "r680",
      "r827"
     ]
    },
    "us-gaap_EarningsPerSharePolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "EarningsPerSharePolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Earnings Per Share, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for computing basic and diluted earnings or loss per share for each class of common stock and participating security. Addresses all significant policy factors, including any antidilutive items that have been excluded from the computation and takes into account stock dividends, splits and reverse splits that occur after the balance sheet date of the latest reporting period but before the issuance of the financial statements."
       }
      }
     },
     "auth_ref": [
      "r55",
      "r56"
     ]
    },
    "us-gaap_EffectiveIncomeTaxRateContinuingOperations": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "EffectiveIncomeTaxRateContinuingOperations",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Effective income tax rate",
        "documentation": "Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations."
       }
      }
     },
     "auth_ref": [
      "r568"
     ]
    },
    "nwpx_EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details": {
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued interest on uncertain income tax positions",
        "documentation": "Represents the amount of accrued interest on uncertain income tax positions."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details": {
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "State franchise tax",
        "documentation": "Represents the amount of state franchise tax."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent": {
     "xbrltype": "percentItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent",
        "terseLabel": "Employee Contribution Percentage for Which Company Will Match at Fifty Percent",
        "documentation": "Employee contribution for which company will match at 50% under defined contribution retirement plan."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent": {
     "xbrltype": "percentItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent",
        "terseLabel": "Employee Contribution Percentage for Which Company Will Match at One Hundred Percent",
        "documentation": "Employee contribution for which company will match at 100% under defined contribution retirement plan."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
        "terseLabel": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)",
        "documentation": "Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r551"
     ]
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions",
        "terseLabel": "Share-Based Payment Arrangement, Nonvested Award, Excluding Option, Cost Not yet Recognized, Amount",
        "documentation": "Amount of cost to be recognized for nonvested award under share-based payment arrangement. Excludes share and unit options."
       }
      }
     },
     "auth_ref": [
      "r944"
     ]
    },
    "nwpx_EngineeredSteelPressurePipeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "EngineeredSteelPressurePipeMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Engineered Steel Pressure Pipe [Member]",
        "documentation": "Represents Engineered Steel Pressure Pipe segment."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressAddressLine1": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityAddressAddressLine1",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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/2023",
     "localname": "EntityAddressCityOrTown",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, City or Town",
        "documentation": "Name of the City or Town"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressPostalZipCode": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityAddressPostalZipCode",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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/2023",
     "localname": "EntityAddressStateOrProvince",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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/2023",
     "localname": "EntityCentralIndexKey",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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": [
      "r872"
     ]
    },
    "dei_EntityCommonStockSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityCommonStockSharesOutstanding",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Common Stock, Shares Outstanding",
        "documentation": "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityCurrentReportingStatus": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityCurrentReportingStatus",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Current Reporting Status",
        "documentation": "Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information",
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization",
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details",
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity [Domain]",
        "documentation": "All the names of the entities being reported upon in a document. Any legal structure used to conduct activities or to hold assets. Some examples of such structures are corporations, partnerships, limited liability companies, grantor trusts, and other trusts. This item does not include business and geographical segments which are included in the geographical or business segments domains."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityEmergingGrowthCompany": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityEmergingGrowthCompany",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Emerging Growth Company",
        "documentation": "Indicate if registrant meets the emerging growth company criteria."
       }
      }
     },
     "auth_ref": [
      "r872"
     ]
    },
    "dei_EntityFileNumber": {
     "xbrltype": "fileNumberItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityFileNumber",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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_EntityFilerCategory": {
     "xbrltype": "filerCategoryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityFilerCategory",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Filer Category",
        "documentation": "Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure."
       }
      }
     },
     "auth_ref": [
      "r872"
     ]
    },
    "dei_EntityIncorporationStateCountryCode": {
     "xbrltype": "edgarStateCountryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityIncorporationStateCountryCode",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Incorporation, State or Country Code",
        "documentation": "Two-character EDGAR code representing the state or country of incorporation."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityInteractiveDataCurrent": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityInteractiveDataCurrent",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Interactive Data Current",
        "documentation": "Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files)."
       }
      }
     },
     "auth_ref": [
      "r881"
     ]
    },
    "dei_EntityPublicFloat": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityPublicFloat",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Public Float",
        "documentation": "The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityRegistrantName": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityRegistrantName",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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": [
      "r872"
     ]
    },
    "dei_EntityShellCompany": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityShellCompany",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Shell Company",
        "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r872"
     ]
    },
    "dei_EntitySmallBusiness": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntitySmallBusiness",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Small Business",
        "documentation": "Indicates that the company is a Smaller Reporting Company (SRC)."
       }
      }
     },
     "auth_ref": [
      "r872"
     ]
    },
    "dei_EntityTaxIdentificationNumber": {
     "xbrltype": "employerIdItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityTaxIdentificationNumber",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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": [
      "r872"
     ]
    },
    "dei_EntityVoluntaryFilers": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityVoluntaryFilers",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Voluntary Filers",
        "documentation": "Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityWellKnownSeasonedIssuer": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "EntityWellKnownSeasonedIssuer",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Well-known Seasoned Issuer",
        "documentation": "Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A."
       }
      }
     },
     "auth_ref": [
      "r882"
     ]
    },
    "us-gaap_EnvironmentalRemediationSiteAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "EnvironmentalRemediationSiteAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Environmental Remediation Site [Axis]",
        "documentation": "Information by location or named area designated for environmental remediation."
       }
      }
     },
     "auth_ref": [
      "r832",
      "r833",
      "r883",
      "r884",
      "r885",
      "r936",
      "r937"
     ]
    },
    "us-gaap_EnvironmentalRemediationSiteDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "EnvironmentalRemediationSiteDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Environmental Remediation Site [Domain]",
        "documentation": "Location or named area designated for environmental remediation."
       }
      }
     },
     "auth_ref": [
      "r832",
      "r833",
      "r883",
      "r884",
      "r885",
      "r936",
      "r937"
     ]
    },
    "nwpx_EquipmentUnderFinanceLeaseMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "EquipmentUnderFinanceLeaseMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Equipment Under Finance Lease [Member]",
        "documentation": "Represents equipment under finance lease."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_EquityComponentDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "EquityComponentDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Equity Component [Domain]",
        "documentation": "Components of equity are the parts of the total Equity balance including that which is allocated to common, preferred, treasury stock, retained earnings, etc."
       }
      }
     },
     "auth_ref": [
      "r23",
      "r214",
      "r245",
      "r246",
      "r247",
      "r275",
      "r276",
      "r277",
      "r279",
      "r285",
      "r287",
      "r297",
      "r334",
      "r335",
      "r425",
      "r553",
      "r554",
      "r555",
      "r582",
      "r583",
      "r606",
      "r607",
      "r608",
      "r609",
      "r610",
      "r611",
      "r614",
      "r623",
      "r624",
      "r625",
      "r626",
      "r627",
      "r628",
      "r648",
      "r694",
      "r695",
      "r696",
      "r709",
      "r771"
     ]
    },
    "nwpx_EquityOfferingMaximumOfferingAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "EquityOfferingMaximumOfferingAmount",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_EquityOfferingMaximumOfferingAmount",
        "terseLabel": "Equity Offering, Maximum Offering Amount",
        "documentation": "Maximum value of company's equity authorized for issuance under equity offering."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_EstimatedCostOfEPASelectedRemedy": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "EstimatedCostOfEPASelectedRemedy",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_EstimatedCostOfEPASelectedRemedy",
        "terseLabel": "Estimated Cost of EPA Selected Remedy",
        "documentation": "The estimated cost of the remedy selected by EPA."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_EstimatedTimeToCompleteSelectedEPARemedy": {
     "xbrltype": "durationItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "EstimatedTimeToCompleteSelectedEPARemedy",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_EstimatedTimeToCompleteSelectedEPARemedy",
        "terseLabel": "Estimated Time to Complete Selected EPA Remedy (Year)",
        "documentation": "The estimated amount of time to complete the selected EPA remedy."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_FairValueByFairValueHierarchyLevelAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FairValueByFairValueHierarchyLevelAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fair Value Hierarchy and NAV [Axis]",
        "documentation": "Information by level within fair value hierarchy and fair value measured at net asset value per share as practical expedient."
       }
      }
     },
     "auth_ref": [
      "r399",
      "r469",
      "r470",
      "r471",
      "r472",
      "r473",
      "r474",
      "r619",
      "r650",
      "r651",
      "r652",
      "r835",
      "r836",
      "r843",
      "r844",
      "r845"
     ]
    },
    "us-gaap_FairValueDisclosuresTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FairValueDisclosuresTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fair Value Disclosures [Text Block]",
        "documentation": "The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information."
       }
      }
     },
     "auth_ref": [
      "r617"
     ]
    },
    "us-gaap_FairValueInputsLevel1Member": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FairValueInputsLevel1Member",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fair Value, Inputs, Level 1 [Member]",
        "documentation": "Quoted prices in active markets for identical assets or liabilities that the reporting entity can access at the measurement date."
       }
      }
     },
     "auth_ref": [
      "r399",
      "r469",
      "r474",
      "r619",
      "r650",
      "r843",
      "r844",
      "r845"
     ]
    },
    "us-gaap_FairValueInputsLevel2Member": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FairValueInputsLevel2Member",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fair Value, Inputs, Level 2 [Member]",
        "documentation": "Inputs other than quoted prices included within level 1 that are observable for an asset or liability, either directly or indirectly, including, but not limited to, quoted prices for similar assets or liabilities in active markets, or quoted prices for identical or similar assets or liabilities in inactive markets."
       }
      }
     },
     "auth_ref": [
      "r399",
      "r469",
      "r474",
      "r619",
      "r651",
      "r835",
      "r836",
      "r843",
      "r844",
      "r845"
     ]
    },
    "us-gaap_FairValueInputsLevel3Member": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FairValueInputsLevel3Member",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fair Value, Inputs, Level 3 [Member]",
        "documentation": "Unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing."
       }
      }
     },
     "auth_ref": [
      "r399",
      "r469",
      "r470",
      "r471",
      "r472",
      "r473",
      "r474",
      "r619",
      "r652",
      "r835",
      "r836",
      "r843",
      "r844",
      "r845"
     ]
    },
    "us-gaap_FairValueMeasurementsFairValueHierarchyDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FairValueMeasurementsFairValueHierarchyDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fair Value Hierarchy and NAV [Domain]",
        "documentation": "Categories used to prioritize the inputs to valuation techniques to measure fair value."
       }
      }
     },
     "auth_ref": [
      "r399",
      "r469",
      "r470",
      "r471",
      "r472",
      "r473",
      "r474",
      "r650",
      "r651",
      "r652",
      "r835",
      "r836",
      "r843",
      "r844",
      "r845"
     ]
    },
    "us-gaap_FinanceLeaseInterestExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseInterestExpense",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Interest on lease liabilities",
        "label": "us-gaap_FinanceLeaseInterestExpense",
        "documentation": "Amount of interest expense on finance lease liability."
       }
      }
     },
     "auth_ref": [
      "r633",
      "r639",
      "r856"
     ]
    },
    "us-gaap_FinanceLeaseInterestPaymentOnLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseInterestPaymentOnLiability",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseInterestPaymentOnLiability",
        "negatedLabel": "Operating cash flows from finance leases",
        "documentation": "Amount of interest paid on finance lease liability."
       }
      }
     },
     "auth_ref": [
      "r635",
      "r643"
     ]
    },
    "us-gaap_FinanceLeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiability",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details": {
       "parentTag": "nwpx_LeaseLiability",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Present value of lease liabilities, finance leases",
        "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease."
       }
      }
     },
     "auth_ref": [
      "r632",
      "r647"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiabilityCurrent",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityCurrent",
        "negatedLabel": "Current portion of lease liabilities, included in Accrued liabilities, finance leases",
        "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease, classified as current."
       }
      }
     },
     "auth_ref": [
      "r632"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiabilityNoncurrent",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-term lease liabilities, finance leases",
        "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease, classified as noncurrent."
       }
      }
     },
     "auth_ref": [
      "r632"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiabilityPaymentsDue",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
        "totalLabel": "Total lease payments, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for finance lease."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiabilityPaymentsDueAfterYearFive",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive",
        "terseLabel": "Thereafter, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiabilityPaymentsDueNextTwelveMonths",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths",
        "terseLabel": "2024, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiabilityPaymentsDueYearFive",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive",
        "terseLabel": "2028, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiabilityPaymentsDueYearFour",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour",
        "terseLabel": "2027, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiabilityPaymentsDueYearThree",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree",
        "terseLabel": "2026, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiabilityPaymentsDueYearTwo",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo",
        "terseLabel": "2025, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseLiabilityUndiscountedExcessAmount",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount",
        "negatedLabel": "Amount representing interest, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for finance lease."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_FinanceLeasePrincipalPayments": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeasePrincipalPayments",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeasePrincipalPayments",
        "negatedLabel": "Payments on finance lease liabilities",
        "negatedTerseLabel": "Financing cash flows from finance leases",
        "documentation": "Amount of cash outflow for principal payment on finance lease."
       }
      }
     },
     "auth_ref": [
      "r634",
      "r643"
     ]
    },
    "us-gaap_FinanceLeaseRightOfUseAsset": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseRightOfUseAsset",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details": {
       "parentTag": "nwpx_LeaseRightOfUseAsset",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finance leases, net, included in Property and equipment",
        "documentation": "Amount, after accumulated amortization, of right-of-use asset from finance lease."
       }
      }
     },
     "auth_ref": [
      "r631"
     ]
    },
    "us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseRightOfUseAssetAccumulatedAmortization",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseRightOfUseAssetAccumulatedAmortization",
        "terseLabel": "Finance Lease, Right-of-Use Asset, Accumulated Amortization",
        "documentation": "Amount of accumulated amortization of right-of-use asset from finance lease."
       }
      }
     },
     "auth_ref": [
      "r888",
      "r894"
     ]
    },
    "us-gaap_FinanceLeaseRightOfUseAssetAmortization": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseRightOfUseAssetAmortization",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Amortization of right-of-use assets",
        "label": "us-gaap_FinanceLeaseRightOfUseAssetAmortization",
        "documentation": "Amount of amortization expense attributable to right-of-use asset from finance lease."
       }
      }
     },
     "auth_ref": [
      "r633",
      "r639",
      "r856"
     ]
    },
    "us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseWeightedAverageDiscountRatePercent",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Finance leases, weighted-average discount rate",
        "label": "us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent",
        "documentation": "Weighted average discount rate for finance lease calculated at point in time."
       }
      }
     },
     "auth_ref": [
      "r646",
      "r856"
     ]
    },
    "us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinanceLeaseWeightedAverageRemainingLeaseTerm1",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Finance leases, weighted-average remaining lease term (Year)",
        "label": "us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1",
        "documentation": "Weighted average remaining lease term for finance lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r645",
      "r856"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetUsefulLife": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetUsefulLife",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FiniteLivedIntangibleAssetUsefulLife",
        "terseLabel": "Finite-Lived Intangible Asset, Useful Life (Year)",
        "documentation": "Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsAccumulatedAmortization",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization",
        "negatedLabel": "Intangible Assets, Accumulated amortization",
        "documentation": "Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life."
       }
      }
     },
     "auth_ref": [
      "r224",
      "r357"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive",
        "terseLabel": "Thereafter",
        "documentation": "Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
        "terseLabel": "2024",
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r152"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFive",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive",
        "terseLabel": "2028",
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r152"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
        "terseLabel": "2027",
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r152"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
        "terseLabel": "2026",
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r152"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
        "terseLabel": "2025",
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r152"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsByMajorClassAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finite-Lived Intangible Assets by Major Class [Axis]",
        "documentation": "Information by major type or class of finite-lived intangible assets."
       }
      }
     },
     "auth_ref": [
      "r354",
      "r356",
      "r357",
      "r358",
      "r657",
      "r658"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsGross": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsGross",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Intangible Assets, Gross",
        "documentation": "Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life."
       }
      }
     },
     "auth_ref": [
      "r151",
      "r658"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsMajorClassNameDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finite-Lived Intangible Assets, Major Class Name [Domain]",
        "documentation": "The major class of finite-lived intangible asset (for example, patents, trademarks, copyrights, etc.) A major class is composed of intangible assets that can be grouped together because they are similar, either by their nature or by their use in the operations of a company."
       }
      }
     },
     "auth_ref": [
      "r69",
      "r70"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FiniteLivedIntangibleAssetsNet",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 4.0
      },
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Intangible assets, net",
        "totalLabel": "Total amortization expense",
        "documentation": "Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life."
       }
      }
     },
     "auth_ref": [
      "r151",
      "r657"
     ]
    },
    "us-gaap_FinitelivedIntangibleAssetsAcquired1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "FinitelivedIntangibleAssetsAcquired1",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Intangible Asset Acquired, Fair Value",
        "documentation": "Amount of increase in assets, excluding financial assets, lacking physical substance with a definite life, from an acquisition."
       }
      }
     },
     "auth_ref": [
      "r355"
     ]
    },
    "us-gaap_ForeignCountryMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ForeignCountryMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Foreign Tax Authority [Member]",
        "documentation": "Designated tax departments of governments entitled to levy and collect income taxes from the entity outside the entity's country of domicile."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ForeignCurrencyTransactionGainLossRealized": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ForeignCurrencyTransactionGainLossRealized",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ForeignCurrencyTransactionGainLossRealized",
        "terseLabel": "Realized Gain (Loss), Foreign Currency Transaction, before Tax",
        "documentation": "Amount, before tax, of realized gain (loss) from foreign currency transaction."
       }
      }
     },
     "auth_ref": [
      "r751",
      "r869",
      "r956",
      "r957",
      "r980"
     ]
    },
    "us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Foreign Currency Transactions and Translations Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for (1) transactions denominated in a currency other than the reporting enterprise's functional currency, (2) translating foreign currency financial statements that are incorporated into the financial statements of the reporting enterprise by consolidation, combination, or the equity method of accounting, and (3) remeasurement of the financial statements of a foreign reporting enterprise in a hyperinflationary economy."
       }
      }
     },
     "auth_ref": [
      "r622"
     ]
    },
    "nwpx_ForeignExchangeForward1Member": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ForeignExchangeForward1Member",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Foreign Exchange Forward 1 [Member]",
        "documentation": "Represents one forward exchange forward contract"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ForeignExchangeForwardMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ForeignExchangeForwardMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Foreign Exchange Forward [Member]",
        "documentation": "Foreign exchange forward traded on an exchange (examples include but are not limited to the International Securities Exchange, Philadelphia Stock Exchange, or the Chicago Mercantile Exchange) for options or future contracts to buy or sell a certain currency, at a specified date, at a fixed exercise exchange rate."
       }
      }
     },
     "auth_ref": [
      "r736",
      "r740",
      "r746",
      "r761",
      "r767",
      "r788",
      "r789",
      "r790",
      "r861"
     ]
    },
    "nwpx_GainOnInsuranceProceeds": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "GainOnInsuranceProceeds",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 11.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_GainOnInsuranceProceeds",
        "negatedLabel": "Gain on insurance proceeds",
        "documentation": "Represents the amount of gain on insurance proceeds recognized during the period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_Goodwill": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "Goodwill",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Goodwill",
        "label": "Goodwill",
        "terseLabel": "Goodwill",
        "documentation": "Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized."
       }
      }
     },
     "auth_ref": [
      "r223",
      "r343",
      "r659",
      "r831",
      "r857",
      "r929",
      "r931"
     ]
    },
    "us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "GoodwillAndIntangibleAssetsDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Goodwill and Intangible Assets Disclosure [Text Block]",
        "documentation": "The entire disclosure for goodwill and intangible assets."
       }
      }
     },
     "auth_ref": [
      "r149"
     ]
    },
    "us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "GoodwillAndIntangibleAssetsGoodwillPolicy",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined."
       }
      }
     },
     "auth_ref": [
      "r342",
      "r353",
      "r831"
     ]
    },
    "us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "GoodwillAndIntangibleAssetsIntangibleAssetsPolicy",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for intangible assets. This accounting policy may address both intangible assets subject to amortization and those that are not. The following also may be disclosed: (1) a description of intangible assets (2) the estimated useful lives of those assets (3) the amortization method used (4) how the entity assesses and measures impairment of such assets (5) how future cash flows are estimated (6) how the fair values of such asset are determined."
       }
      }
     },
     "auth_ref": [
      "r16"
     ]
    },
    "us-gaap_GoodwillPurchaseAccountingAdjustments": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "GoodwillPurchaseAccountingAdjustments",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_GoodwillPurchaseAccountingAdjustments",
        "terseLabel": "Goodwill, Purchase Accounting Adjustments",
        "documentation": "Amount of increase (decrease) from adjustments after acquisition date under purchase accounting of an asset representing the future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized."
       }
      }
     },
     "auth_ref": [
      "r1",
      "r930"
     ]
    },
    "us-gaap_GrossProfit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "GrossProfit",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations": {
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Gross profit",
        "totalLabel": "Gross profit",
        "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity."
       }
      }
     },
     "auth_ref": [
      "r138",
      "r261",
      "r302",
      "r316",
      "r322",
      "r325",
      "r333",
      "r372",
      "r373",
      "r375",
      "r376",
      "r377",
      "r379",
      "r381",
      "r383",
      "r384",
      "r621",
      "r829",
      "r938"
     ]
    },
    "us-gaap_HedgingDesignationAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "HedgingDesignationAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Hedging Designation [Axis]",
        "documentation": "Information by designation of purpose of derivative instrument."
       }
      }
     },
     "auth_ref": [
      "r24",
      "r603"
     ]
    },
    "us-gaap_HedgingDesignationDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "HedgingDesignationDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Hedging Designation [Domain]",
        "documentation": "Designation of purpose of derivative instrument."
       }
      }
     },
     "auth_ref": [
      "r24"
     ]
    },
    "us-gaap_HedgingRelationshipDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "HedgingRelationshipDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Hedging Relationship [Domain]",
        "documentation": "Nature or intent of a hedge."
       }
      }
     },
     "auth_ref": [
      "r24"
     ]
    },
    "dei_IcfrAuditorAttestationFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "IcfrAuditorAttestationFlag",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ICFR Auditor Attestation Flag"
       }
      }
     },
     "auth_ref": [
      "r874",
      "r875",
      "r876"
     ]
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details": {
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "United States",
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to domestic operations."
       }
      }
     },
     "auth_ref": [
      "r262",
      "r588"
     ]
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations": {
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": 1.0,
       "order": 0.0
      },
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
        "totalLabel": "Income before income taxes",
        "documentation": "Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest."
       }
      }
     },
     "auth_ref": [
      "r0",
      "r136",
      "r175",
      "r302",
      "r316",
      "r322",
      "r325",
      "r663",
      "r676",
      "r829"
     ]
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details": {
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Foreign",
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile."
       }
      }
     },
     "auth_ref": [
      "r262",
      "r588"
     ]
    },
    "us-gaap_IncomeStatementAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeStatementAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Statement [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncomeStatementLocationAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeStatementLocationAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Statement Location [Axis]",
        "documentation": "Information by location in the income statement."
       }
      }
     },
     "auth_ref": [
      "r359",
      "r361",
      "r755"
     ]
    },
    "us-gaap_IncomeStatementLocationDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeStatementLocationDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Statement Location [Domain]",
        "documentation": "Location in the income statement."
       }
      }
     },
     "auth_ref": [
      "r361",
      "r755"
     ]
    },
    "us-gaap_IncomeTaxAuthorityAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxAuthorityAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Tax Authority [Axis]",
        "documentation": "Information by tax jurisdiction."
       }
      }
     },
     "auth_ref": [
      "r20"
     ]
    },
    "us-gaap_IncomeTaxAuthorityDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxAuthorityDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Tax Authority [Domain]",
        "documentation": "Agency, division or body classification that levies income taxes, examines tax returns for compliance, or grants exemptions from or makes other decisions pertaining to income taxes."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Tax Disclosure [Text Block]",
        "documentation": "The entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information."
       }
      }
     },
     "auth_ref": [
      "r263",
      "r561",
      "r569",
      "r573",
      "r579",
      "r584",
      "r589",
      "r590",
      "r591",
      "r708"
     ]
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations": {
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": -1.0,
       "order": 1.0
      },
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      },
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income tax expense",
        "totalLabel": "Total income tax expense",
        "negatedLabel": "Tax (expense) benefit",
        "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations."
       }
      }
     },
     "auth_ref": [
      "r178",
      "r191",
      "r286",
      "r287",
      "r310",
      "r567",
      "r585",
      "r681"
     ]
    },
    "us-gaap_IncomeTaxPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Tax, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements."
       }
      }
     },
     "auth_ref": [
      "r244",
      "r563",
      "r564",
      "r573",
      "r574",
      "r578",
      "r580",
      "r704"
     ]
    },
    "us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details": {
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Change in valuation allowance",
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in the valuation allowance for deferred tax assets."
       }
      }
     },
     "auth_ref": [
      "r945"
     ]
    },
    "us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxReconciliationForeignIncomeTaxRateDifferential",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details": {
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Foreign rate differential",
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to foreign income tax expense (benefit)."
       }
      }
     },
     "auth_ref": [
      "r945"
     ]
    },
    "us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details": {
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 7.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income tax expense at federal statutory rate",
        "documentation": "The amount of income tax expense or benefit for the period computed by applying the domestic federal statutory tax rates to pretax income from continuing operations."
       }
      }
     },
     "auth_ref": [
      "r568"
     ]
    },
    "us-gaap_IncomeTaxReconciliationNondeductibleExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxReconciliationNondeductibleExpense",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details": {
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Nondeductible expenses",
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to nondeductible expenses."
       }
      }
     },
     "auth_ref": [
      "r945"
     ]
    },
    "us-gaap_IncomeTaxReconciliationOtherAdjustments": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxReconciliationOtherAdjustments",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details": {
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncomeTaxReconciliationOtherAdjustments",
        "terseLabel": "Other",
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other adjustments."
       }
      }
     },
     "auth_ref": [
      "r945"
     ]
    },
    "us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxReconciliationStateAndLocalIncomeTaxes",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details": {
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "State expense, net of federal income tax effect",
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to state and local income tax expense (benefit)."
       }
      }
     },
     "auth_ref": [
      "r945"
     ]
    },
    "us-gaap_IncomeTaxesPaidNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncomeTaxesPaidNet",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash paid during the period for income taxes, net of refunds of $145, $23, and $79",
        "documentation": "The amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income, net of any cash received during the current period as refunds for the overpayment of taxes."
       }
      }
     },
     "auth_ref": [
      "r51"
     ]
    },
    "us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncreaseDecreaseInAccountsAndOtherReceivables",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 8.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables",
        "negatedTerseLabel": "Trade and other receivables",
        "documentation": "The increase (decrease) during the reporting period in the amount due from customers for the credit sale of goods and services; includes accounts receivable and other types of receivables."
       }
      }
     },
     "auth_ref": [
      "r11"
     ]
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncreaseDecreaseInAccountsPayable",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInAccountsPayable",
        "terseLabel": "Accounts payable",
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business."
       }
      }
     },
     "auth_ref": [
      "r11"
     ]
    },
    "us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities",
        "terseLabel": "Accrued and other liabilities",
        "documentation": "Amount of increase (decrease) in accrued expenses, and obligations classified as other."
       }
      }
     },
     "auth_ref": [
      "r908"
     ]
    },
    "us-gaap_IncreaseDecreaseInContractWithCustomerAsset": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncreaseDecreaseInContractWithCustomerAsset",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 7.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInContractWithCustomerAsset",
        "negatedLabel": "Contract assets, net",
        "documentation": "Amount of increase (decrease) in right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time."
       }
      }
     },
     "auth_ref": [
      "r908"
     ]
    },
    "us-gaap_IncreaseDecreaseInInventories": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncreaseDecreaseInInventories",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInInventories",
        "negatedTerseLabel": "Inventories",
        "documentation": "The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities."
       }
      }
     },
     "auth_ref": [
      "r11"
     ]
    },
    "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncreaseDecreaseInOperatingCapitalAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Changes in operating assets and liabilities, net of acquired assets and assumed liabilities:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
        "negatedTerseLabel": "Prepaid expenses and other assets",
        "documentation": "Amount of increase (decrease) in prepaid expenses, and assets classified as other."
       }
      }
     },
     "auth_ref": [
      "r11"
     ]
    },
    "nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax",
        "terseLabel": "Increase (Decrease) in Revenue from Contract with Customers, Including Assessed Tax",
        "documentation": "The increase (decrease) during the period of the amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer."
       }
      }
     },
     "auth_ref": []
    },
    "ecd_InsiderTradingArrLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2023",
     "localname": "InsiderTradingArrLineItems",
     "auth_ref": [
      "r879"
     ]
    },
    "us-gaap_InterestCostsCapitalized": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InterestCostsCapitalized",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_InterestCostsCapitalized",
        "terseLabel": "Interest Costs Capitalized",
        "documentation": "Amount of interest capitalized during the period."
       }
      }
     },
     "auth_ref": [
      "r114"
     ]
    },
    "us-gaap_InterestExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InterestExpense",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations": {
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Gain on cash flow hedges",
        "negatedLabel": "Interest expense",
        "documentation": "Amount of the cost of borrowed funds accounted for as interest expense."
       }
      }
     },
     "auth_ref": [
      "r116",
      "r177",
      "r248",
      "r306",
      "r629",
      "r756",
      "r869",
      "r979"
     ]
    },
    "nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized",
        "terseLabel": "Interest Expense, Debt and Finance Leases, Net of Amounts Capitalized",
        "documentation": "Represents the amount of interest expense recorded during the period from debt and finance leases, net of amounts capitalized."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_InterestExpenseMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InterestExpenseMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Interest Expense [Member]",
        "documentation": "Primary financial statement caption encompassing interest expense."
       }
      }
     },
     "auth_ref": [
      "r28"
     ]
    },
    "us-gaap_InterestPaidNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InterestPaidNet",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash paid during the period for interest, net of amounts capitalized",
        "documentation": "Amount of cash paid for interest, excluding capitalized interest, classified as operating activity. Includes, but is not limited to, payment to settle zero-coupon bond for accreted interest of debt discount and debt instrument with insignificant coupon interest rate in relation to effective interest rate of borrowing attributable to accreted interest of debt discount."
       }
      }
     },
     "auth_ref": [
      "r253",
      "r255",
      "r256"
     ]
    },
    "us-gaap_InterestRateSwapMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InterestRateSwapMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Interest Rate Swap [Member]",
        "documentation": "Forward based contracts in which two parties agree to swap periodic payments that are fixed at the outset of the swap contract with variable payments based on a market interest rate (index rate) over a specified period."
       }
      }
     },
     "auth_ref": [
      "r812",
      "r866",
      "r867"
     ]
    },
    "nwpx_InterimFundingAgreementifaMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "InterimFundingAgreementifaMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Interim Funding AgreementIFA [Member]",
        "documentation": "Represents the Interim Funding Agreement with Wells Fargo Finance Inc."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_InventoryDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InventoryDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Inventory Disclosure [Text Block]",
        "documentation": "The entire disclosure for inventory. Includes, but is not limited to, the basis of stating inventory, the method of determining inventory cost, the classes of inventory, and the nature of the cost elements included in inventory."
       }
      }
     },
     "auth_ref": [
      "r339"
     ]
    },
    "us-gaap_InventoryFinishedGoodsNetOfReserves": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InventoryFinishedGoodsNetOfReserves",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details": {
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finished goods",
        "documentation": "Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of merchandise or goods held by the company that are readily available for sale."
       }
      }
     },
     "auth_ref": [
      "r148",
      "r816"
     ]
    },
    "us-gaap_InventoryNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InventoryNet",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 1.0
      },
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Inventories",
        "totalLabel": "Total inventories",
        "documentation": "Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r231",
      "r815",
      "r857"
     ]
    },
    "us-gaap_InventoryPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InventoryPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Inventory, Policy [Policy Text Block]",
        "documentation": "Disclosure of inventory accounting policy for inventory classes, including, but not limited to, basis for determining inventory amounts, methods by which amounts are added and removed from inventory classes, loss recognition on impairment of inventories, and situations in which inventories are stated above cost."
       }
      }
     },
     "auth_ref": [
      "r179",
      "r219",
      "r230",
      "r339",
      "r340",
      "r341",
      "r655",
      "r825"
     ]
    },
    "us-gaap_InventoryRawMaterialsNetOfReserves": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InventoryRawMaterialsNetOfReserves",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details": {
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Raw materials",
        "documentation": "Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of unprocessed items to be consumed in the manufacturing or production process."
       }
      }
     },
     "auth_ref": [
      "r148",
      "r818"
     ]
    },
    "us-gaap_InventorySuppliesNetOfReserves": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InventorySuppliesNetOfReserves",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details": {
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Supplies",
        "documentation": "Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of products used directly or indirectly in the manufacturing or production process, which may or may not become part of the final product. May also include items used in the storage, presentation or transportation of physical goods."
       }
      }
     },
     "auth_ref": [
      "r66",
      "r819"
     ]
    },
    "us-gaap_InventoryWorkInProcessNetOfReserves": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "InventoryWorkInProcessNetOfReserves",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details": {
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Work-in-process",
        "documentation": "Carrying amount, net of reserves and adjustments, as of the balance sheet date of merchandise or goods which are partially completed. This inventory is generally comprised of raw materials, labor and factory overhead costs, which require further materials, labor and overhead to be converted into finished goods, and which generally require the use of estimates to determine percentage complete and pricing."
       }
      }
     },
     "auth_ref": [
      "r148",
      "r817"
     ]
    },
    "us-gaap_LandImprovementsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LandImprovementsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Land Improvements [Member]",
        "documentation": "Additions or improvements to real estate held."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LeaseCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LeaseCost",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LeaseCost",
        "totalLabel": "Total lease cost",
        "documentation": "Amount of lease cost recognized by lessee for lease contract."
       }
      }
     },
     "auth_ref": [
      "r638",
      "r856"
     ]
    },
    "us-gaap_LeaseCostTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LeaseCostTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lease, Cost [Table Text Block]",
        "documentation": "Tabular disclosure of lessee's lease cost. Includes, but is not limited to, interest expense for finance lease, amortization of right-of-use asset for finance lease, operating lease cost, short-term lease cost, variable lease cost and sublease income."
       }
      }
     },
     "auth_ref": [
      "r960"
     ]
    },
    "nwpx_LeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "LeaseLiability",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_LeaseLiability",
        "totalLabel": "Total lease liabilities",
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating and finance lease."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_LeaseRightOfUseAsset": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "LeaseRightOfUseAsset",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_LeaseRightOfUseAsset",
        "totalLabel": "Total right-of-use assets",
        "documentation": "Amount of lessee's right to use underlying asset under lease."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lease Terms and Discount Rates for Lease Liabilities [Table Text Block]",
        "documentation": "Tabular disclosure of lessee's lease terms and discount rates for lease liabilities."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LeaseholdImprovementsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LeaseholdImprovementsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Leasehold Improvements [Member]",
        "documentation": "Additions or improvements to assets held under a lease arrangement."
       }
      }
     },
     "auth_ref": [
      "r154"
     ]
    },
    "dei_LegalEntityAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "LegalEntityAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information",
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization",
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details",
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Legal Entity [Axis]",
        "documentation": "The set of legal entities associated with a report."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_LesseeLeaseAssetsAndLiabilitiesTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "LesseeLeaseAssetsAndLiabilitiesTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lessee, Lease, Assets and Liabilities [Table Text Block]",
        "documentation": "The tabular disclosure for assets and liabilities of leases of the lessee."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_LesseeLeaseDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "LesseeLeaseDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lessee, Lease, Disclosure [Text Block]",
        "documentation": "The entire disclosure for leases of lessee."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LesseeLeasesPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LesseeLeasesPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lessee, Leases [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for leasing arrangement entered into by lessee."
       }
      }
     },
     "auth_ref": [
      "r637"
     ]
    },
    "nwpx_LesseeLiabilityMaturityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "LesseeLiabilityMaturityTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lessee, Liability, Maturity [Table Text Block]",
        "documentation": "Tabular disclosure of undiscounted cash flows of lessee's operating and finace lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating and finance lease liability recognized in statement of financial position."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDue",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
        "totalLabel": "Total lease payments, operating leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive",
        "terseLabel": "Thereafter, operating leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease due after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
        "terseLabel": "2024, operating leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFive",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive",
        "terseLabel": "2028, operating leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
        "terseLabel": "2027, operating leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
        "terseLabel": "2026, operating leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
        "terseLabel": "2025, operating leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
        "negatedLabel": "Amount representing interest, operating leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease."
       }
      }
     },
     "auth_ref": [
      "r647"
     ]
    },
    "us-gaap_LettersOfCreditOutstandingAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LettersOfCreditOutstandingAmount",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LettersOfCreditOutstandingAmount",
        "terseLabel": "Letters of Credit Outstanding, Amount",
        "documentation": "The total amount of the contingent obligation under letters of credit outstanding as of the reporting date."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_Liabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "Liabilities",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_Liabilities",
        "totalLabel": "Total liabilities",
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future."
       }
      }
     },
     "auth_ref": [
      "r33",
      "r261",
      "r333",
      "r372",
      "r373",
      "r375",
      "r376",
      "r377",
      "r379",
      "r381",
      "r383",
      "r384",
      "r597",
      "r599",
      "r600",
      "r621",
      "r728",
      "r828",
      "r870",
      "r938",
      "r962",
      "r963"
     ]
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LiabilitiesAndStockholdersEquity",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LiabilitiesAndStockholdersEquity",
        "totalLabel": "Total liabilities and stockholders\u2019 equity",
        "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any."
       }
      }
     },
     "auth_ref": [
      "r133",
      "r174",
      "r672",
      "r857",
      "r910",
      "r928",
      "r955"
     ]
    },
    "us-gaap_LiabilitiesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LiabilitiesCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LiabilitiesCurrent",
        "totalLabel": "Total current liabilities",
        "documentation": "Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r35",
      "r218",
      "r261",
      "r333",
      "r372",
      "r373",
      "r375",
      "r376",
      "r377",
      "r379",
      "r381",
      "r383",
      "r384",
      "r597",
      "r599",
      "r600",
      "r621",
      "r857",
      "r938",
      "r962",
      "r963"
     ]
    },
    "us-gaap_LiabilitiesCurrentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LiabilitiesCurrentAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current liabilities:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LineOfCredit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LineOfCredit",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LineOfCredit",
        "terseLabel": "Long-Term Line of Credit",
        "documentation": "The carrying value as of the balance sheet date of the current and noncurrent portions of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement."
       }
      }
     },
     "auth_ref": [
      "r30",
      "r173",
      "r972"
     ]
    },
    "us-gaap_LineOfCreditFacilityAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LineOfCreditFacilityAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lender Name [Axis]",
        "documentation": "Information by name of lender, which may be a single entity (for example, but not limited to, a bank, pension fund, venture capital firm) or a group of entities that participate in the line of credit."
       }
      }
     },
     "auth_ref": [
      "r32",
      "r909"
     ]
    },
    "us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LineOfCreditFacilityIncreaseDecreaseForPeriodNet",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LineOfCreditFacilityIncreaseDecreaseForPeriodNet",
        "terseLabel": "Line of Credit Facility, Increase (Decrease), Net",
        "documentation": "Amount of increase (decrease) of the credit facility."
       }
      }
     },
     "auth_ref": [
      "r909"
     ]
    },
    "us-gaap_LineOfCreditFacilityLenderDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LineOfCreditFacilityLenderDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Line of Credit Facility, Lender [Domain]",
        "documentation": "Identification of the lender, which may be a single entity (for example, a bank, pension fund, venture capital firm) or a group of entities that participate in the line of credit, including a letter of credit facility."
       }
      }
     },
     "auth_ref": [
      "r32",
      "r909"
     ]
    },
    "us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LineOfCreditFacilityMaximumBorrowingCapacity",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity",
        "terseLabel": "Line of Credit Facility, Maximum Borrowing Capacity",
        "documentation": "Maximum borrowing capacity under the credit facility without consideration of any current restrictions on the amount that could be borrowed or the amounts currently outstanding under the facility."
       }
      }
     },
     "auth_ref": [
      "r32"
     ]
    },
    "us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LineOfCreditFacilityRemainingBorrowingCapacity",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity",
        "terseLabel": "Line of Credit Facility, Remaining Borrowing Capacity",
        "documentation": "Amount of borrowing capacity currently available under the credit facility (current borrowing capacity less the amount of borrowings outstanding)."
       }
      }
     },
     "auth_ref": [
      "r32"
     ]
    },
    "us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage",
        "terseLabel": "Line of Credit Facility, Unused Capacity, Commitment Fee Percentage",
        "documentation": "The fee, expressed as a percentage of the line of credit facility, for available but unused credit capacity under the credit facility."
       }
      }
     },
     "auth_ref": []
    },
    "dei_LocalPhoneNumber": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "LocalPhoneNumber",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Local Phone Number",
        "documentation": "Local phone number for entity."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LongTermDebtCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LongTermDebtCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current debt",
        "documentation": "Amount, after deduction of unamortized premium (discount) and debt issuance cost, of long-term debt classified as current. Excludes lease obligation."
       }
      }
     },
     "auth_ref": [
      "r227"
     ]
    },
    "us-gaap_LongTermDebtTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LongTermDebtTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-Term Debt [Text Block]",
        "documentation": "The entire disclosure for long-term debt."
       }
      }
     },
     "auth_ref": [
      "r156"
     ]
    },
    "us-gaap_LongTermLineOfCredit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LongTermLineOfCredit",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Borrowings on line of credit",
        "documentation": "The carrying value as of the balance sheet date of the noncurrent portion of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement."
       }
      }
     },
     "auth_ref": [
      "r36",
      "r74",
      "r75"
     ]
    },
    "us-gaap_LossContingenciesByNatureOfContingencyAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LossContingenciesByNatureOfContingencyAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Loss Contingency Nature [Axis]",
        "documentation": "Information by type of existing condition, situation, or set of circumstances involving uncertainty as to possible loss to an enterprise that will ultimately be resolved when one or more future events occur or fail to occur."
       }
      }
     },
     "auth_ref": [
      "r366",
      "r367",
      "r368",
      "r371",
      "r934",
      "r935"
     ]
    },
    "us-gaap_LossContingencyAccrualCarryingValueCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LossContingencyAccrualCarryingValueCurrent",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LossContingencyAccrualCarryingValueCurrent",
        "terseLabel": "Loss Contingency, Accrual, Current",
        "documentation": "Amount of loss contingency liability expected to be resolved within one year or the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r366"
     ]
    },
    "us-gaap_LossContingencyNatureDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "LossContingencyNatureDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Loss Contingency, Nature [Domain]",
        "documentation": "An existing condition, situation, or set of circumstances involving uncertainty as to possible loss to an enterprise that will ultimately be resolved when one or more future events occur or fail to occur. Resolution of the uncertainty may confirm the incurrence of a loss or impairment of an asset or the incurrence of a liability."
       }
      }
     },
     "auth_ref": [
      "r366",
      "r367",
      "r368",
      "r371",
      "r934",
      "r935"
     ]
    },
    "nwpx_LowerWillametteGroupMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "LowerWillametteGroupMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lower Willamette Group [Member]",
        "documentation": "Refers to information regarding the Lower Willamette Group."
       }
      }
     },
     "auth_ref": []
    },
    "country_MX": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/country/2023",
     "localname": "MX",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "MEXICO"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_MachineryAndEquipmentMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "MachineryAndEquipmentMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Machinery and Equipment [Member]",
        "documentation": "Tangible personal property used to produce goods and services, including, but is not limited to, tools, dies and molds, computer and office equipment."
       }
      }
     },
     "auth_ref": []
    },
    "srt_MajorCustomersAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "MajorCustomersAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Customer [Axis]",
        "documentation": "Information by name or description of a single external customer or a group of external customers."
       }
      }
     },
     "auth_ref": [
      "r331",
      "r841",
      "r942",
      "r974",
      "r975"
     ]
    },
    "srt_MaximumMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "MaximumMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Maximum [Member]",
        "documentation": "Upper limit of the provided range."
       }
      }
     },
     "auth_ref": [
      "r367",
      "r368",
      "r369",
      "r370",
      "r514",
      "r654",
      "r693",
      "r720",
      "r721",
      "r777",
      "r779",
      "r781",
      "r782",
      "r794",
      "r809",
      "r810",
      "r830",
      "r839",
      "r853",
      "r858",
      "r940",
      "r964",
      "r965",
      "r966",
      "r967",
      "r968",
      "r969"
     ]
    },
    "nwpx_MaximumSeniorLeverageRatio": {
     "xbrltype": "pureItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "MaximumSeniorLeverageRatio",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_MaximumSeniorLeverageRatio",
        "terseLabel": "Maximum Senior Leverage Ratio",
        "documentation": "The maximum senior leverage ratio."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_MaximumSeniorLeverageRatioRequirement": {
     "xbrltype": "pureItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "MaximumSeniorLeverageRatioRequirement",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_MaximumSeniorLeverageRatioRequirement",
        "terseLabel": "Maximum Senior Leverage Ratio Requirement",
        "documentation": "The maximum senior leverage ratio requirement."
       }
      }
     },
     "auth_ref": []
    },
    "srt_MinimumMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "MinimumMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Minimum [Member]",
        "documentation": "Lower limit of the provided range."
       }
      }
     },
     "auth_ref": [
      "r367",
      "r368",
      "r369",
      "r370",
      "r514",
      "r654",
      "r693",
      "r720",
      "r721",
      "r777",
      "r779",
      "r781",
      "r782",
      "r794",
      "r809",
      "r810",
      "r830",
      "r839",
      "r853",
      "r858",
      "r940",
      "r964",
      "r965",
      "r966",
      "r967",
      "r968",
      "r969"
     ]
    },
    "ecd_MtrlTermsOfTrdArrTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2023",
     "localname": "MtrlTermsOfTrdArrTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Material Terms of Trading Arrangement [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r880"
     ]
    },
    "srt_NameOfMajorCustomerDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "NameOfMajorCustomerDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Customer [Domain]",
        "documentation": "Single external customer or group of external customers."
       }
      }
     },
     "auth_ref": [
      "r331",
      "r841",
      "r942",
      "r974",
      "r975"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "NetCashProvidedByUsedInFinancingActivities",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
        "totalLabel": "Net cash provided by (used in) financing activities",
        "documentation": "Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit."
       }
      }
     },
     "auth_ref": [
      "r254"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash flows from financing activities:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "NetCashProvidedByUsedInInvestingActivities",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
        "totalLabel": "Net cash used in investing activities",
        "documentation": "Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets."
       }
      }
     },
     "auth_ref": [
      "r254"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash flows from investing activities:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "NetCashProvidedByUsedInOperatingActivities",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
        "totalLabel": "Net cash provided by (used in) operating activities",
        "documentation": "Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities."
       }
      }
     },
     "auth_ref": [
      "r143",
      "r144",
      "r145"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash flows from operating activities:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NetIncomeLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "NetIncomeLoss",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income": {
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0,
       "order": 0.0
      },
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 3.0
      },
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net income",
        "totalLabel": "Net income",
        "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent."
       }
      }
     },
     "auth_ref": [
      "r137",
      "r145",
      "r176",
      "r216",
      "r239",
      "r242",
      "r247",
      "r261",
      "r278",
      "r280",
      "r281",
      "r282",
      "r283",
      "r286",
      "r287",
      "r291",
      "r302",
      "r316",
      "r322",
      "r325",
      "r333",
      "r372",
      "r373",
      "r375",
      "r376",
      "r377",
      "r379",
      "r381",
      "r383",
      "r384",
      "r616",
      "r621",
      "r677",
      "r752",
      "r769",
      "r770",
      "r829",
      "r869",
      "r938"
     ]
    },
    "us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "NewAccountingPronouncementsPolicyPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "New Accounting Pronouncements, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact."
       }
      }
     },
     "auth_ref": []
    },
    "ecd_NonRule10b51ArrAdoptedFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2023",
     "localname": "NonRule10b51ArrAdoptedFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ecd_NonRule10b51ArrAdoptedFlag",
        "terseLabel": "Non-Rule 10b5-1 Arrangement Adopted [Flag]"
       }
      }
     },
     "auth_ref": [
      "r880"
     ]
    },
    "ecd_NonRule10b51ArrTrmntdFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2023",
     "localname": "NonRule10b51ArrTrmntdFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ecd_NonRule10b51ArrTrmntdFlag",
        "terseLabel": "Non-Rule 10b5-1 Arrangement Terminated [Flag]"
       }
      }
     },
     "auth_ref": [
      "r880"
     ]
    },
    "nwpx_NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued consideration in acquisition of business",
        "documentation": "The total amount of consideration accrued in acquiring a business or in consideration for an asset received in a noncash (or part noncash) acquisition."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NondesignatedMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "NondesignatedMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Not Designated as Hedging Instrument [Member]",
        "documentation": "Derivative instrument not designated as hedging instrument under Generally Accepted Accounting Principles (GAAP)."
       }
      }
     },
     "auth_ref": [
      "r24"
     ]
    },
    "nwpx_NonqualifiedRetirementSavingsPlanMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NonqualifiedRetirementSavingsPlanMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Non-qualified Retirement Savings Plan [Member]",
        "documentation": "Information pertaining to the Non-qualified Retirement Savings Plan."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_NoteToFinancialStatementDetailsTextual": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NoteToFinancialStatementDetailsTextual",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note To Financial Statement Details Textual"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_NotesToFinancialStatementsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NotesToFinancialStatementsAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Notes To Financial Statements [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_NumberOfActiveStockIncentivePlans": {
     "xbrltype": "integerItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NumberOfActiveStockIncentivePlans",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_NumberOfActiveStockIncentivePlans",
        "terseLabel": "Number Of Active Stock Incentive Plans",
        "documentation": "The number of active stock incentive plans."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables": {
     "xbrltype": "integerItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables",
        "terseLabel": "Number of Customers with Receivable Balance in Excess of Ten Percent of Receivables",
        "documentation": "Number of customers with balances in excess of 10% of total accounts receivable."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_NumberOfInactiveStockIncentivePlans": {
     "xbrltype": "integerItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NumberOfInactiveStockIncentivePlans",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_NumberOfInactiveStockIncentivePlans",
        "terseLabel": "Number Of Inactive Stock Incentive Plans",
        "documentation": "The number of inactive stock incentive plans."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_NumberOfMajorCustomers": {
     "xbrltype": "integerItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NumberOfMajorCustomers",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_NumberOfMajorCustomers",
        "terseLabel": "Number of Major Customers",
        "documentation": "Represents the number of major customers accounting for 10% or more of the specified concentration risk benchmark, which includes, but not limited to, sales revenue, accounts receivable, etc."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_NumberOfManufacturingFacilities": {
     "xbrltype": "integerItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NumberOfManufacturingFacilities",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_NumberOfManufacturingFacilities",
        "terseLabel": "Number of Manufacturing Facilities",
        "documentation": "Represents number of manufacturing facilities."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_NumberOfNoncontributoryDefinedBenefitPlans": {
     "xbrltype": "integerItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NumberOfNoncontributoryDefinedBenefitPlans",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_NumberOfNoncontributoryDefinedBenefitPlans",
        "terseLabel": "Number of Non-contributory Defined Benefit Plans",
        "documentation": "Number of noncontributory defined benefit plans."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NumberOfOperatingSegments": {
     "xbrltype": "integerItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "NumberOfOperatingSegments",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NumberOfOperatingSegments",
        "terseLabel": "Number of Operating Segments",
        "documentation": "Number of operating segments. An operating segment is a component of an enterprise: (a) that engages in business activities from which it may earn revenues and incur expenses (including revenues and expenses relating to transactions with other components of the same enterprise), (b) whose operating results are regularly reviewed by the enterprise's chief operating decision maker to make decisions about resources to be allocated to the segment and assess its performance, and (c) for which discrete financial information is available. An operating segment may engage in business activities for which it has yet to earn revenues, for example, start-up operations may be operating segments before earning revenues."
       }
      }
     },
     "auth_ref": [
      "r921"
     ]
    },
    "nwpx_NumberOfPotentiallyResponsibleParties": {
     "xbrltype": "integerItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "NumberOfPotentiallyResponsibleParties",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_NumberOfPotentiallyResponsibleParties",
        "terseLabel": "Number Of Potentially Responsible Parties",
        "documentation": "Number of potentially responsible parties for Portland Harbor Superfund site."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OciBeforeReclassificationsNetOfTaxAttributableToParent",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other comprehensive income (loss) before reclassifications",
        "documentation": "Amount after tax, before reclassification adjustments, of other comprehensive income (loss), attributable to parent."
       }
      }
     },
     "auth_ref": [
      "r29",
      "r42"
     ]
    },
    "nwpx_OneSppCustomerMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "OneSppCustomerMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "One SPP Customer [Member]",
        "documentation": "Represents one SPP customer."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OpenTaxYear": {
     "xbrltype": "gYearListItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OpenTaxYear",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OpenTaxYear",
        "terseLabel": "Open Tax Year",
        "documentation": "Tax year that remains open to examination under enacted tax laws, in YYYY format."
       }
      }
     },
     "auth_ref": [
      "r570"
     ]
    },
    "us-gaap_OperatingIncomeLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingIncomeLoss",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations": {
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OperatingIncomeLoss",
        "totalLabel": "Operating income",
        "documentation": "The net result for the period of deducting operating expenses from operating revenues."
       }
      }
     },
     "auth_ref": [
      "r302",
      "r316",
      "r322",
      "r325",
      "r829"
     ]
    },
    "us-gaap_OperatingLeaseCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingLeaseCost",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Operating lease cost",
        "label": "us-gaap_OperatingLeaseCost",
        "documentation": "Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability."
       }
      }
     },
     "auth_ref": [
      "r640",
      "r856"
     ]
    },
    "us-gaap_OperatingLeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingLeaseLiability",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details": {
       "parentTag": "nwpx_LeaseLiability",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Present value of lease liabilities, operating leases",
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease."
       }
      }
     },
     "auth_ref": [
      "r632"
     ]
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingLeaseLiabilityCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current portion of operating lease liabilities",
        "negatedLabel": "Current portion of lease liabilities, operating leases",
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current."
       }
      }
     },
     "auth_ref": [
      "r632"
     ]
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingLeaseLiabilityNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-term lease liabilities, operating leases",
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent."
       }
      }
     },
     "auth_ref": [
      "r632"
     ]
    },
    "us-gaap_OperatingLeasePayments": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingLeasePayments",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OperatingLeasePayments",
        "negatedLabel": "Operating cash flows from operating leases",
        "documentation": "Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use."
       }
      }
     },
     "auth_ref": [
      "r636",
      "r643"
     ]
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingLeaseRightOfUseAsset",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 0.0
      },
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details": {
       "parentTag": "nwpx_LeaseRightOfUseAsset",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating leases, Right-of-use assets",
        "terseLabel": "Operating lease right-of-use assets",
        "documentation": "Amount of lessee's right to use underlying asset under operating lease."
       }
      }
     },
     "auth_ref": [
      "r631"
     ]
    },
    "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingLeaseWeightedAverageDiscountRatePercent",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Operating leases, weighted-average discount rate",
        "label": "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent",
        "documentation": "Weighted average discount rate for operating lease calculated at point in time."
       }
      }
     },
     "auth_ref": [
      "r646",
      "r856"
     ]
    },
    "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Operating leases, weighted-average remaining lease term (Year)",
        "label": "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1",
        "documentation": "Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r645",
      "r856"
     ]
    },
    "us-gaap_OperatingLossCarryforwards": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingLossCarryforwards",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OperatingLossCarryforwards",
        "terseLabel": "Operating Loss Carryforwards",
        "documentation": "Amount of operating loss carryforward, before tax effects, available to reduce future taxable income under enacted tax laws."
       }
      }
     },
     "auth_ref": [
      "r82"
     ]
    },
    "nwpx_OperatingLossCarryforwardsExpirationYear": {
     "xbrltype": "gYearItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "OperatingLossCarryforwardsExpirationYear",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_OperatingLossCarryforwardsExpirationYear",
        "terseLabel": "Operating Loss Carryforwards, Expiration Year",
        "documentation": "Expiration year of the operating loss carryforward."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OperatingSegmentsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OperatingSegmentsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating Segments [Member]",
        "documentation": "Identifies components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity."
       }
      }
     },
     "auth_ref": [
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r325"
     ]
    },
    "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]",
        "documentation": "The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure."
       }
      }
     },
     "auth_ref": [
      "r120",
      "r165",
      "r701",
      "r702"
     ]
    },
    "us-gaap_OtherAssetsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherAssetsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Assets [Member]",
        "documentation": "Primary financial statement caption encompassing other assets."
       }
      }
     },
     "auth_ref": [
      "r101",
      "r109"
     ]
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherAssetsNoncurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other assets",
        "documentation": "Amount of noncurrent assets classified as other."
       }
      }
     },
     "auth_ref": [
      "r225"
     ]
    },
    "us-gaap_OtherCommitment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherCommitment",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OtherCommitment",
        "terseLabel": "Other Commitment",
        "documentation": "Minimum amount of other commitment not otherwise specified in the taxonomy. Excludes commitments explicitly modeled in the taxonomy, including but not limited to, long-term and short-term purchase commitments, recorded and unrecorded purchase obligations, supply commitments, registration payment arrangements, leases, debt, product warranties, guarantees, environmental remediation obligations, and pensions."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived",
        "terseLabel": "Other Commitment, Amount Paid for Equipment Purchased Yet Not Received",
        "documentation": "Amount of commitment of payment for equipment purchased but not received."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherCommitmentsAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherCommitmentsAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Commitments [Axis]",
        "documentation": "Information by type of other commitment."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherCommitmentsDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherCommitmentsDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Commitments [Domain]",
        "documentation": "Other future obligation."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income": {
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent",
        "negatedLabel": "Pension liability adjustment",
        "documentation": "Amount, after tax and reclassification adjustment, of (increase) decrease in accumulated other comprehensive income for defined benefit plan, attributable to parent."
       }
      }
     },
     "auth_ref": [
      "r7",
      "r21",
      "r135",
      "r166"
     ]
    },
    "us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income": {
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Unrealized gain (loss) on derivatives designated as cash flow hedges",
        "documentation": "Amount, after tax and reclassification, of gain (loss) from derivative instrument designated and qualifying as cash flow hedge included in assessment of hedge effectiveness, attributable to parent."
       }
      }
     },
     "auth_ref": [
      "r236"
     ]
    },
    "us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent",
        "negatedLabel": "Unrealized gain (loss) on cash flow hedges, tax expense/benefit",
        "documentation": "Amount, after reclassification, of tax expense (benefit) for gain (loss) from derivative instrument designated and qualifying as cash flow hedge included in assessment of hedge effectiveness, attributable to parent."
       }
      }
     },
     "auth_ref": [
      "r237"
     ]
    },
    "us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax",
        "terseLabel": "Other Comprehensive Income (Loss), Cash Flow Hedge, Gain (Loss), before Reclassification and Tax",
        "documentation": "Amount, before tax and reclassification, of gain (loss) from derivative instrument designated and qualifying cash flow hedge included in assessment of hedge effectiveness."
       }
      }
     },
     "auth_ref": [
      "r235",
      "r236",
      "r601",
      "r602",
      "r605"
     ]
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income": {
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net current period adjustments to Other comprehensive income",
        "totalLabel": "Other comprehensive income (loss), net of tax",
        "documentation": "Amount after tax of other comprehensive income (loss) attributable to parent entity."
       }
      }
     },
     "auth_ref": [
      "r9",
      "r21",
      "r166",
      "r240",
      "r243"
     ]
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other comprehensive income (loss), net of tax:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax",
        "negatedLabel": "Pension liability adjustment, tax expense/benefit",
        "documentation": "Amount, after reclassification adjustment, of tax (expense) benefit for (increase) decrease in accumulated other comprehensive income of defined benefit plan."
       }
      }
     },
     "auth_ref": [
      "r7",
      "r8",
      "r166"
     ]
    },
    "nwpx_OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Information Related to Operating and Finance Leases [Table Text Block]",
        "documentation": "Tabular disclosure of other information related to operating and finance leases."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherIntangibleAssetsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherIntangibleAssetsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Intangible Assets [Member]",
        "documentation": "Intangible assets classified as other."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherLiabilitiesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherLiabilitiesMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Liabilities [Member]",
        "documentation": "Primary financial statement caption encompassing other liabilities."
       }
      }
     },
     "auth_ref": [
      "r101",
      "r109"
     ]
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherLiabilitiesNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other long-term liabilities",
        "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r37"
     ]
    },
    "nwpx_OtherLongtermLiabilitiesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "OtherLongtermLiabilitiesMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Long-term Liabilities [Member]",
        "documentation": "Represents other long-term liabilities."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherNoncashIncomeExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherNoncashIncomeExpense",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 9.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OtherNoncashIncomeExpense",
        "negatedLabel": "Other, net",
        "documentation": "Amount of income (expense) included in net income that results in no cash inflow (outflow), classified as other."
       }
      }
     },
     "auth_ref": [
      "r145"
     ]
    },
    "us-gaap_OtherNonoperatingIncomeExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "OtherNonoperatingIncomeExpense",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations": {
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other income",
        "terseLabel": "Non-service cost",
        "documentation": "Amount of income (expense) related to nonoperating activities, classified as other."
       }
      }
     },
     "auth_ref": [
      "r141"
     ]
    },
    "nwpx_ParkEnvironmentalEquipmentLlcMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ParkEnvironmentalEquipmentLlcMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Park Environmental Equipment, LLC [Member]",
        "documentation": "Represents Park Environmental Equipment, LLC."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_ParkusaDefinedContributionPlanMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ParkusaDefinedContributionPlanMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ParkUSA Defined Contribution Plan [Member]",
        "documentation": "Information pertaining to the ParkUSA Defined Contribution Plan."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PatentsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PatentsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Patents [Member]",
        "documentation": "Exclusive legal right granted by the government to the owner of the patent to exploit an invention or a process for a period of time specified by law."
       }
      }
     },
     "auth_ref": [
      "r164"
     ]
    },
    "nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition",
        "negatedLabel": "Payment of working capital adjustment in acquisition of business",
        "documentation": "Represents the payment of working capital adjustment in business acquisition."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PaymentsForProceedsFromOtherInvestingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PaymentsForProceedsFromOtherInvestingActivities",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PaymentsForProceedsFromOtherInvestingActivities",
        "negatedLabel": "Other investing activities",
        "documentation": "Amount of cash (inflow) outflow from investing activities classified as other."
       }
      }
     },
     "auth_ref": [
      "r886",
      "r906"
     ]
    },
    "us-gaap_PaymentsForRepurchaseOfCommonStock": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PaymentsForRepurchaseOfCommonStock",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PaymentsForRepurchaseOfCommonStock",
        "negatedLabel": "Repurchase of common stock",
        "documentation": "The cash outflow to reacquire common stock during the period."
       }
      }
     },
     "auth_ref": [
      "r47"
     ]
    },
    "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PaymentsRelatedToTaxWithholdingForShareBasedCompensation",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation",
        "negatedLabel": "Tax withholdings related to net share settlements of restricted stock and performance share awards",
        "documentation": "Amount of cash outflow to satisfy grantee's tax withholding obligation for award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r252"
     ]
    },
    "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PaymentsToAcquireBusinessesNetOfCashAcquired",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired",
        "terseLabel": "Payments to Acquire Businesses, Net of Cash Acquired, Total",
        "negatedLabel": "Acquisition of business, net of cash acquired",
        "documentation": "The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase."
       }
      }
     },
     "auth_ref": [
      "r45"
     ]
    },
    "us-gaap_PaymentsToAcquireIntangibleAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PaymentsToAcquireIntangibleAssets",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PaymentsToAcquireIntangibleAssets",
        "negatedLabel": "Purchases of intangible assets",
        "documentation": "The cash outflow to acquire asset without physical form usually arising from contractual or other legal rights, excluding goodwill."
       }
      }
     },
     "auth_ref": [
      "r142"
     ]
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PaymentsToAcquirePropertyPlantAndEquipment",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Capital expenditures",
        "negatedLabel": "Purchases of property and equipment",
        "documentation": "The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets."
       }
      }
     },
     "auth_ref": [
      "r142"
     ]
    },
    "us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Retirement Benefits [Text Block]",
        "documentation": "The entire disclosure for retirement benefits."
       }
      }
     },
     "auth_ref": [
      "r442",
      "r466",
      "r468",
      "r474",
      "r491",
      "r493",
      "r494",
      "r495",
      "r496",
      "r497",
      "r509",
      "r510",
      "r511",
      "r845"
     ]
    },
    "us-gaap_PensionAndOtherPostretirementPlansPolicy": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PensionAndOtherPostretirementPlansPolicy",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Pension and Other Postretirement Plans, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for pension and other postretirement benefit plans. This accounting policy may address (1) the types of plans sponsored by the entity, and the benefits provided by each plan (2) groups that participate in (or are covered by) each plan (3) how plan assets, liabilities and expenses are measured, including the use of any actuaries and (4) significant assumptions used by the entity to value plan assets and liabilities and how such assumptions are derived."
       }
      }
     },
     "auth_ref": [
      "r15",
      "r17",
      "r18",
      "r25",
      "r76"
     ]
    },
    "us-gaap_PensionPlansDefinedBenefitMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PensionPlansDefinedBenefitMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Pension Plan [Member]",
        "documentation": "Plan designed to provide participant with pension benefits. Includes, but is not limited to, defined benefit and defined contribution plans. Excludes other postretirement benefits."
       }
      }
     },
     "auth_ref": [
      "r443",
      "r445",
      "r446",
      "r447",
      "r448",
      "r449",
      "r450",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r458",
      "r459",
      "r460",
      "r461",
      "r462",
      "r463",
      "r464",
      "r465",
      "r466",
      "r467",
      "r469",
      "r470",
      "r471",
      "r472",
      "r473",
      "r474",
      "r475",
      "r476",
      "r477",
      "r478",
      "r479",
      "r480",
      "r481",
      "r482",
      "r483",
      "r484",
      "r485",
      "r486",
      "r487",
      "r488",
      "r489",
      "r490",
      "r492",
      "r495",
      "r498",
      "r499",
      "r500",
      "r501",
      "r502",
      "r503",
      "r504",
      "r505",
      "r506",
      "r507",
      "r508",
      "r511",
      "r512",
      "r515",
      "r845",
      "r846",
      "r850",
      "r851",
      "r852"
     ]
    },
    "nwpx_PerformanceAwardsIssuedMultiplier": {
     "xbrltype": "percentItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "PerformanceAwardsIssuedMultiplier",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_PerformanceAwardsIssuedMultiplier",
        "terseLabel": "Performance Awards Issued Multiplier",
        "documentation": "The percentage of the performance awards issued multiplier."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_PerformanceShareAwardTargetLevelPercentage": {
     "xbrltype": "percentItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "PerformanceShareAwardTargetLevelPercentage",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_PerformanceShareAwardTargetLevelPercentage",
        "terseLabel": "Performance Share Award Target Level, Percentage",
        "documentation": "Represents the target level percentage for performance share awards."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PerformanceSharesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PerformanceSharesMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Performance Shares [Member]",
        "documentation": "Share-based payment arrangement awarded for meeting performance target."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PolicyTextBlockAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PolicyTextBlockAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PolicyTextBlockAbstract",
        "terseLabel": "Accounting Policies"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_PortlandHarborNaturalreSourcesTrusteeCouncilMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "PortlandHarborNaturalreSourcesTrusteeCouncilMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Portland Harbor Natural Resources Trustee Council [Member]",
        "documentation": "The name or description of the loss contingency by its nature."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_PortlandHarborSuperfundSiteMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "PortlandHarborSuperfundSiteMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Portland Harbor Superfund Site [Member]",
        "documentation": "Represents the Portland Harbor Superfund Site."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_PrecastInfrastructureAndEngineeredSystemsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "PrecastInfrastructureAndEngineeredSystemsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Precast Infrastructure and Engineered Systems [Member]",
        "documentation": "Represents Precast Infrastructure and Engineered Systems segment."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PreferredStockParOrStatedValuePerShare": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PreferredStockParOrStatedValuePerShare",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Preferred stock, par value (in dollars per share)",
        "documentation": "Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer."
       }
      }
     },
     "auth_ref": [
      "r127",
      "r412"
     ]
    },
    "us-gaap_PreferredStockSharesAuthorized": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PreferredStockSharesAuthorized",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Preferred stock, shares authorized (in shares)",
        "documentation": "The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws."
       }
      }
     },
     "auth_ref": [
      "r127",
      "r730"
     ]
    },
    "us-gaap_PreferredStockSharesIssued": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PreferredStockSharesIssued",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Preferred stock, shares issued (in shares)",
        "documentation": "Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt."
       }
      }
     },
     "auth_ref": [
      "r127",
      "r412"
     ]
    },
    "us-gaap_PreferredStockSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PreferredStockSharesOutstanding",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Preferred stock, shares outstanding (in shares)",
        "documentation": "Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased."
       }
      }
     },
     "auth_ref": [
      "r127",
      "r730",
      "r749",
      "r981",
      "r982"
     ]
    },
    "us-gaap_PreferredStockValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PreferredStockValue",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Preferred stock, $.01 par value, 10,000,000 shares authorized, none issued or outstanding",
        "documentation": "Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity."
       }
      }
     },
     "auth_ref": [
      "r127",
      "r668",
      "r857"
     ]
    },
    "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PrepaidExpenseAndOtherAssetsCurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Prepaid expenses and other",
        "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r902"
     ]
    },
    "us-gaap_ProceedsFromIncomeTaxRefunds": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ProceedsFromIncomeTaxRefunds",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Proceeds from Income Tax Refunds",
        "documentation": "The amount of cash received during the period as refunds for the overpayment of taxes."
       }
      }
     },
     "auth_ref": [
      "r51",
      "r144"
     ]
    },
    "us-gaap_ProceedsFromInsuranceSettlementInvestingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ProceedsFromInsuranceSettlementInvestingActivities",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Proceeds from insurance",
        "documentation": "Amount of cash inflow for proceeds from settlement of insurance claim, classified as investing activities. Excludes insurance settlement classified as operating activities."
       }
      }
     },
     "auth_ref": [
      "r10",
      "r44"
     ]
    },
    "us-gaap_ProceedsFromIssuanceOfLongTermDebt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ProceedsFromIssuanceOfLongTermDebt",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Borrowings on other debt",
        "documentation": "The cash inflow from a debt initially having maturity due after one year or beyond the operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r46",
      "r705"
     ]
    },
    "us-gaap_ProceedsFromLinesOfCredit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ProceedsFromLinesOfCredit",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ProceedsFromLinesOfCredit",
        "terseLabel": "Borrowings on line of credit",
        "documentation": "Amount of cash inflow from contractual arrangement with the lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements."
       }
      }
     },
     "auth_ref": [
      "r46",
      "r909"
     ]
    },
    "us-gaap_ProceedsFromPaymentsForOtherFinancingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ProceedsFromPaymentsForOtherFinancingActivities",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other financing activities",
        "documentation": "Amount of cash inflow (outflow) from financing activities classified as other."
       }
      }
     },
     "auth_ref": [
      "r887",
      "r907"
     ]
    },
    "nwpx_PropertyAndEquipmentMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "PropertyAndEquipmentMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property and Equipment [Member]",
        "documentation": "Represents property and equipment."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PropertyPlantAndEquipmentByTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PropertyPlantAndEquipmentByTypeAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-Lived Tangible Asset [Axis]",
        "documentation": "Information by type of long-lived, physical assets used to produce goods and services and not intended for resale."
       }
      }
     },
     "auth_ref": [
      "r13"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PropertyPlantAndEquipmentDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property, Plant and Equipment Disclosure [Text Block]",
        "documentation": "The entire disclosure for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections."
       }
      }
     },
     "auth_ref": [
      "r153",
      "r183",
      "r188",
      "r189"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentGross": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PropertyPlantAndEquipmentGross",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details": {
       "parentTag": "nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property and equipment, gross",
        "documentation": "Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures."
       }
      }
     },
     "auth_ref": [
      "r154",
      "r221",
      "r675"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property and equipment",
        "documentation": "Amount of increase (decrease) of long-lived, physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PropertyPlantAndEquipmentNet",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property and equipment, net",
        "terseLabel": "Property, Plant and Equipment, Net",
        "documentation": "Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures."
       }
      }
     },
     "auth_ref": [
      "r13",
      "r664",
      "r675",
      "r857"
     ]
    },
    "nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "PropertyPlantAndEquipmentNetExcludingConstructionInProgress",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_PropertyPlantAndEquipmentNetExcludingConstructionInProgress",
        "totalLabel": "Property, Plant and Equipment, Net, Excluding Construction In Progress",
        "documentation": "Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services excluding construction in progress and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PropertyPlantAndEquipmentPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PropertyPlantAndEquipmentPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property, Plant and Equipment, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections."
       }
      }
     },
     "auth_ref": [
      "r13",
      "r183",
      "r188",
      "r673"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PropertyPlantAndEquipmentTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property, Plant and Equipment [Table Text Block]",
        "documentation": "Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation."
       }
      }
     },
     "auth_ref": [
      "r13"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentTypeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PropertyPlantAndEquipmentTypeDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-Lived Tangible Asset [Domain]",
        "documentation": "Listing of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale. Examples include land, buildings, machinery and equipment, and other types of furniture and equipment including, but not limited to, office equipment, furniture and fixtures, and computer equipment and software."
       }
      }
     },
     "auth_ref": [
      "r154"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentUsefulLife": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "PropertyPlantAndEquipmentUsefulLife",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PropertyPlantAndEquipmentUsefulLife",
        "terseLabel": "Property, Plant and Equipment, Useful Life (Year)",
        "documentation": "Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment."
       }
      }
     },
     "auth_ref": []
    },
    "srt_RangeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "RangeAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statistical Measurement [Axis]",
        "documentation": "Information by statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median."
       }
      }
     },
     "auth_ref": [
      "r367",
      "r368",
      "r369",
      "r370",
      "r466",
      "r514",
      "r544",
      "r545",
      "r546",
      "r653",
      "r654",
      "r693",
      "r720",
      "r721",
      "r777",
      "r779",
      "r781",
      "r782",
      "r794",
      "r809",
      "r810",
      "r830",
      "r839",
      "r853",
      "r858",
      "r861",
      "r932",
      "r940",
      "r965",
      "r966",
      "r967",
      "r968",
      "r969"
     ]
    },
    "srt_RangeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "RangeMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statistical Measurement [Domain]",
        "documentation": "Statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median."
       }
      }
     },
     "auth_ref": [
      "r367",
      "r368",
      "r369",
      "r370",
      "r466",
      "r514",
      "r544",
      "r545",
      "r546",
      "r653",
      "r654",
      "r693",
      "r720",
      "r721",
      "r777",
      "r779",
      "r781",
      "r782",
      "r794",
      "r809",
      "r810",
      "r830",
      "r839",
      "r853",
      "r858",
      "r861",
      "r932",
      "r940",
      "r965",
      "r966",
      "r967",
      "r968",
      "r969"
     ]
    },
    "us-gaap_ReceivablesNetCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ReceivablesNetCurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Trade and other receivables, less allowance for doubtful accounts of $121 and $369",
        "documentation": "The total amount due to the entity within one year of the balance sheet date (or one operating cycle, if longer) from outside sources, including trade accounts receivable, notes and loans receivable, as well as any other types of receivables, net of allowances established for the purpose of reducing such receivables to an amount that approximates their net realizable value."
       }
      }
     },
     "auth_ref": [
      "r857"
     ]
    },
    "us-gaap_ReceivablesPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ReceivablesPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Receivable [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for receivable. Includes, but is not limited to, accounts receivable and financing receivable."
       }
      }
     },
     "auth_ref": [
      "r924",
      "r925",
      "r926",
      "r927"
     ]
    },
    "us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent",
        "negatedLabel": "Amounts reclassified from Accumulated other comprehensive loss",
        "documentation": "Amount after tax of reclassification adjustments of other comprehensive income (loss) attributable to parent."
       }
      }
     },
     "auth_ref": [
      "r29",
      "r42"
     ]
    },
    "us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Reclassification out of Accumulated Other Comprehensive Income [Axis]",
        "documentation": "Information by item reclassified out of accumulated other comprehensive income (loss)."
       }
      }
     },
     "auth_ref": [
      "r247"
     ]
    },
    "us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ReclassificationOutOfAccumulatedOtherComprehensiveIncomeDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Reclassification out of Accumulated Other Comprehensive Income [Domain]",
        "documentation": "Item reclassified out of accumulated other comprehensive income (loss)."
       }
      }
     },
     "auth_ref": [
      "r247"
     ]
    },
    "us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Reclassification out of Accumulated Other Comprehensive Income [Member]",
        "documentation": "Identifies item reclassified out of accumulated other comprehensive income (loss)."
       }
      }
     },
     "auth_ref": [
      "r247"
     ]
    },
    "us-gaap_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Reclassification out of Accumulated Other Comprehensive Income [Table Text Block]",
        "documentation": "Tabular disclosure of information about items reclassified out of accumulated other comprehensive income (loss)."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ReclassificationTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ReclassificationTypeAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Reclassification, Type [Axis]",
        "documentation": "Information by type of reclassification adjustment affecting comparability of financial statement. Excludes amendment to accounting standards, other change in accounting principle, and correction of error."
       }
      }
     },
     "auth_ref": [
      "r900"
     ]
    },
    "us-gaap_ReclassificationTypeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ReclassificationTypeDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Reclassification, Type [Domain]",
        "documentation": "Type of reclassification adjustment affecting comparability of financial statement. Excludes amendment to accounting standards, other change in accounting principle, and correction of error."
       }
      }
     },
     "auth_ref": [
      "r900"
     ]
    },
    "nwpx_ReclassifiedToInterestExpenseMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ReclassifiedToInterestExpenseMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Reclassified to Interest Expense [Member]",
        "documentation": "Related to reclassified to interest expense."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_ReclassifiedToNetSalesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ReclassifiedToNetSalesMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Reclassified to Net Sales [Member]",
        "documentation": "Related to reclassified to net sales."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RepaymentsOfLinesOfCredit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RepaymentsOfLinesOfCredit",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_RepaymentsOfLinesOfCredit",
        "negatedLabel": "Repayments on line of credit",
        "documentation": "Amount of cash outflow for payment of an obligation from a lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements."
       }
      }
     },
     "auth_ref": [
      "r48",
      "r909"
     ]
    },
    "us-gaap_RepaymentsOfLongTermDebt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RepaymentsOfLongTermDebt",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 7.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_RepaymentsOfLongTermDebt",
        "negatedLabel": "Payments on other debt",
        "documentation": "The cash outflow for debt initially having maturity due after one year or beyond the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r48",
      "r706"
     ]
    },
    "srt_RepurchaseAgreementCounterpartyNameDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "RepurchaseAgreementCounterpartyNameDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Counterparty Name [Domain]",
        "documentation": "Named other party that participates in a financial transaction. Examples include, but not limited to, the name of the financial institution."
       }
      }
     },
     "auth_ref": [
      "r264",
      "r265",
      "r389",
      "r414",
      "r649",
      "r821",
      "r822"
     ]
    },
    "nwpx_RestrictedStockUnitsAndPerformanceStockAwardsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "RestrictedStockUnitsAndPerformanceStockAwardsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Restricted Stock Units and Performance Stock Awards [Member]",
        "documentation": "The type or description of the award."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RetainedEarningsAccumulatedDeficit",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Retained earnings",
        "documentation": "Amount of accumulated undistributed earnings (deficit)."
       }
      }
     },
     "auth_ref": [
      "r130",
      "r158",
      "r671",
      "r697",
      "r699",
      "r707",
      "r731",
      "r857"
     ]
    },
    "us-gaap_RetainedEarningsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RetainedEarningsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Retained Earnings [Member]",
        "documentation": "Accumulated undistributed earnings (deficit)."
       }
      }
     },
     "auth_ref": [
      "r214",
      "r275",
      "r276",
      "r277",
      "r279",
      "r285",
      "r287",
      "r334",
      "r335",
      "r553",
      "r554",
      "r555",
      "r582",
      "r583",
      "r606",
      "r608",
      "r609",
      "r611",
      "r614",
      "r694",
      "r696",
      "r709",
      "r981"
     ]
    },
    "nwpx_RetirementPlanExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "RetirementPlanExpense",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_RetirementPlanExpense",
        "terseLabel": "Retirement Plan Expense",
        "documentation": "Represents retirement plan expense."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RetirementPlanTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RetirementPlanTypeAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Retirement Plan Type [Axis]",
        "documentation": "Information by type of retirement benefit plan. Includes, but is not limited to, retirement benefit arrangement for defined benefit pension and other postretirement plans, retirement benefit arrangement for defined contribution pension and other postretirement plans, and special and contractual termination benefits payable upon retirement."
       }
      }
     },
     "auth_ref": [
      "r443",
      "r445",
      "r446",
      "r447",
      "r448",
      "r449",
      "r450",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r458",
      "r459",
      "r460",
      "r461",
      "r462",
      "r463",
      "r464",
      "r465",
      "r466",
      "r467",
      "r469",
      "r470",
      "r471",
      "r472",
      "r473",
      "r474",
      "r475",
      "r476",
      "r477",
      "r478",
      "r479",
      "r480",
      "r481",
      "r482",
      "r483",
      "r484",
      "r485",
      "r486",
      "r487",
      "r488",
      "r489",
      "r490",
      "r492",
      "r495",
      "r498",
      "r499",
      "r500",
      "r501",
      "r502",
      "r503",
      "r504",
      "r505",
      "r506",
      "r507",
      "r508",
      "r511",
      "r512",
      "r513",
      "r515",
      "r845",
      "r846",
      "r847",
      "r848",
      "r849",
      "r850",
      "r851",
      "r852"
     ]
    },
    "us-gaap_RetirementPlanTypeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RetirementPlanTypeDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Retirement Plan Type [Domain]",
        "documentation": "Type of plan designed to provide participants with retirement benefits. Includes, but is not limited to, retirement benefit arrangement for defined benefit pension and other postretirement plans, retirement benefit arrangement for defined contribution pension and other postretirement plans, and special and contractual termination benefits payable upon retirement."
       }
      }
     },
     "auth_ref": [
      "r443",
      "r445",
      "r446",
      "r447",
      "r448",
      "r449",
      "r450",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r458",
      "r459",
      "r460",
      "r461",
      "r462",
      "r463",
      "r464",
      "r465",
      "r466",
      "r467",
      "r469",
      "r470",
      "r471",
      "r472",
      "r473",
      "r474",
      "r475",
      "r476",
      "r477",
      "r478",
      "r479",
      "r480",
      "r481",
      "r482",
      "r483",
      "r484",
      "r485",
      "r486",
      "r487",
      "r488",
      "r489",
      "r490",
      "r492",
      "r495",
      "r498",
      "r499",
      "r500",
      "r501",
      "r502",
      "r503",
      "r504",
      "r505",
      "r506",
      "r507",
      "r508",
      "r511",
      "r512",
      "r513",
      "r515",
      "r845",
      "r846",
      "r847",
      "r848",
      "r849",
      "r850",
      "r851",
      "r852"
     ]
    },
    "us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RevenueFromContractWithCustomerIncludingAssessedTax",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations": {
       "parentTag": "us-gaap_GrossProfit",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net sales",
        "documentation": "Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise."
       }
      }
     },
     "auth_ref": [
      "r303",
      "r304",
      "r315",
      "r320",
      "r321",
      "r327",
      "r329",
      "r331",
      "r437",
      "r438",
      "r656"
     ]
    },
    "us-gaap_RevenueFromContractWithCustomerTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RevenueFromContractWithCustomerTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue from Contract with Customer [Text Block]",
        "documentation": "The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts."
       }
      }
     },
     "auth_ref": [
      "r192",
      "r429",
      "r430",
      "r431",
      "r432",
      "r433",
      "r434",
      "r435",
      "r436",
      "r441"
     ]
    },
    "us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue from External Customers by Geographic Areas [Table Text Block]",
        "documentation": "Tabular disclosure of revenue from external customers by geographic areas attributed to the entity's country of domicile and to foreign countries from which the entity derives revenue."
       }
      }
     },
     "auth_ref": [
      "r27"
     ]
    },
    "us-gaap_RevenueRecognitionPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RevenueRecognitionPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for revenue. Includes revenue from contract with customer and from other sources."
       }
      }
     },
     "auth_ref": [
      "r753",
      "r811",
      "r826"
     ]
    },
    "us-gaap_RevenueRemainingPerformanceObligation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RevenueRemainingPerformanceObligation",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_RevenueRemainingPerformanceObligation",
        "terseLabel": "Revenue, Remaining Performance Obligation, Amount",
        "documentation": "Amount of transaction price allocated to performance obligation that has not been recognized as revenue."
       }
      }
     },
     "auth_ref": [
      "r186"
     ]
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1",
        "terseLabel": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period (Year)",
        "documentation": "Period in which remaining performance obligation is expected to be recognized as revenue, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r187"
     ]
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]",
        "documentation": "Start date of time band for expected timing of satisfaction of remaining performance obligation, in YYYY-MM-DD format."
       }
      }
     },
     "auth_ref": [
      "r187"
     ]
    },
    "us-gaap_RevenueRemainingPerformanceObligationPercentage": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RevenueRemainingPerformanceObligationPercentage",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_RevenueRemainingPerformanceObligationPercentage",
        "terseLabel": "Revenue, Remaining Performance Obligation, Percentage",
        "documentation": "Percentage of remaining performance obligation to total remaining performance obligation not recognized as revenue."
       }
      }
     },
     "auth_ref": [
      "r889"
     ]
    },
    "us-gaap_RevolvingCreditFacilityMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RevolvingCreditFacilityMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revolving Credit Facility [Member]",
        "documentation": "Arrangement in which loan proceeds can continuously be obtained following repayments, but the total amount borrowed cannot exceed a specified maximum amount."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Right-of-use assets obtained in exchange for finance lease liabilities",
        "documentation": "Amount of increase in right-of-use asset obtained in exchange for finance lease liability."
       }
      }
     },
     "auth_ref": [
      "r644",
      "r856"
     ]
    },
    "us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Right-of-use assets obtained in exchange for operating lease liabilities",
        "documentation": "Amount of increase in right-of-use asset obtained in exchange for operating lease liability."
       }
      }
     },
     "auth_ref": [
      "r644",
      "r856"
     ]
    },
    "ecd_Rule10b51ArrAdoptedFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2023",
     "localname": "Rule10b51ArrAdoptedFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ecd_Rule10b51ArrAdoptedFlag",
        "terseLabel": "Rule 10b5-1 Arrangement Adopted [Flag]"
       }
      }
     },
     "auth_ref": [
      "r880"
     ]
    },
    "ecd_Rule10b51ArrTrmntdFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2023",
     "localname": "Rule10b51ArrTrmntdFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ecd_Rule10b51ArrTrmntdFlag",
        "terseLabel": "Rule 10b5-1 Arrangement Terminated [Flag]"
       }
      }
     },
     "auth_ref": [
      "r880"
     ]
    },
    "nwpx_Rule10b51TradingPlanDesignatedAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "Rule10b51TradingPlanDesignatedAmount",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_Rule10b51TradingPlanDesignatedAmount",
        "terseLabel": "Rule 10b5-1 Trading Plan, Designated Amount",
        "documentation": "The amount of stock designated for repurchase under the Company's Rule 10b5-1 trading plan."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SaleOfStockNameOfTransactionDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SaleOfStockNameOfTransactionDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Sale of Stock [Domain]",
        "documentation": "Sale of the entity's stock, including, but not limited to, initial public offering (IPO) and private placement."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SalesAndExciseTaxPayableCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SalesAndExciseTaxPayableCurrent",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_SalesAndExciseTaxPayableCurrent",
        "terseLabel": "Sales and Excise Tax Payable, Current",
        "documentation": "Carrying value as of the balance sheet date of liabilities incurred through that date and payable for statutory sales and use taxes, including value added tax. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r31"
     ]
    },
    "us-gaap_SalesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SalesMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Sales [Member]",
        "documentation": "Primary financial statement caption encompassing revenue from sale of goods and services rendered in the normal course of business."
       }
      }
     },
     "auth_ref": [
      "r28"
     ]
    },
    "us-gaap_SalesRevenueNetMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SalesRevenueNetMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue Benchmark [Member]",
        "documentation": "Revenue from sale of product and rendering of service and other sources of income, when it serves as benchmark in concentration of risk calculation."
       }
      }
     },
     "auth_ref": [
      "r331",
      "r890"
     ]
    },
    "us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Accumulated Other Comprehensive Income (Loss) [Table Text Block]",
        "documentation": "Tabular disclosure of the components of accumulated other comprehensive income (loss)."
       }
      }
     },
     "auth_ref": [
      "r42",
      "r958",
      "r959"
     ]
    },
    "us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Acquired Finite-Lived Intangible Assets by Major Class [Table Text Block]",
        "documentation": "Tabular disclosure of the characteristics, including initial carrying value, residual amount, weighted average useful life, of finite-lived intangible assets acquired during the period by major class. A major class is composed of intangible assets that can be grouped together because they are similar, either by nature or by their use in the operations of the company."
       }
      }
     },
     "auth_ref": [
      "r69"
     ]
    },
    "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Business Acquisitions, by Acquisition [Table Text Block]",
        "documentation": "Tabular disclosure of a material business combination completed during the period, including background, timing, and recognized assets and liabilities. This table does not include leveraged buyouts."
       }
      }
     },
     "auth_ref": [
      "r86",
      "r88"
     ]
    },
    "nwpx_ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Changes in Accumulated Other Comprehensive Income Loss [Table Text Block]",
        "documentation": "Represents schedule of changes in accumulated other comprehensive income loss."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]",
        "documentation": "Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years."
       }
      }
     },
     "auth_ref": [
      "r161"
     ]
    },
    "us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Deferred Tax Assets and Liabilities [Table Text Block]",
        "documentation": "Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets."
       }
      }
     },
     "auth_ref": [
      "r160"
     ]
    },
    "us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Derivative Instruments, Gain (Loss) [Table Text Block]",
        "documentation": "Tabular disclosure of the location and amount of derivative instruments and nonderivative instruments designated as hedging instruments reported before netting adjustments, and the amount of gain (loss) on derivative instruments and nonderivative instruments designated and qualified as hedging instruments."
       }
      }
     },
     "auth_ref": [
      "r102",
      "r105",
      "r603"
     ]
    },
    "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]",
        "documentation": "Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations."
       }
      }
     },
     "auth_ref": [
      "r920"
     ]
    },
    "us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]",
        "documentation": "Tabular disclosure of the reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax income from continuing operations."
       }
      }
     },
     "auth_ref": [
      "r159"
     ]
    },
    "us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]",
        "documentation": "Tabular disclosure of allocation of amount expensed and capitalized for award under share-based payment arrangement to statement of income or comprehensive income and statement of financial position. Includes, but is not limited to, corresponding line item in financial statement."
       }
      }
     },
     "auth_ref": [
      "r78"
     ]
    },
    "us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Fair Value, Assets and Liabilities Measured on Recurring Basis [Table Text Block]",
        "documentation": "Tabular disclosure of assets and liabilities, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, that are measured at fair value on a recurring basis. The disclosures contemplated herein include the fair value measurements at the reporting date by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets (Level 1), significant other observable inputs (Level 2), and significant unobservable inputs (Level 3)."
       }
      }
     },
     "auth_ref": [
      "r618",
      "r619"
     ]
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Finite-Lived Intangible Assets [Table Text Block]",
        "documentation": "Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance with a finite life, by either major class or business segment."
       }
      }
     },
     "auth_ref": [
      "r69",
      "r70"
     ]
    },
    "us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Income before Income Tax, Domestic and Foreign [Table Text Block]",
        "documentation": "Tabular disclosure of income before income tax between domestic and foreign jurisdictions."
       }
      }
     },
     "auth_ref": [
      "r911"
     ]
    },
    "nwpx_ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule Of Inventory Current And Non Current [Table Text Block]",
        "documentation": "Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process. Includes current and non-current inventory balances."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfSegmentReportingInformationBySegmentTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Segment Reporting Information, by Segment [Table Text Block]",
        "documentation": "Tabular disclosure of the profit or loss and total assets for each reportable segment. An entity discloses certain information on each reportable segment if the amounts (a) are included in the measure of segment profit or loss reviewed by the chief operating decision maker or (b) are otherwise regularly provided to the chief operating decision maker, even if not included in that measure of segment profit or loss."
       }
      }
     },
     "auth_ref": [
      "r63",
      "r64",
      "r65",
      "r67"
     ]
    },
    "us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Unrecognized Tax Benefits Roll Forward [Table Text Block]",
        "documentation": "Tabular disclosure of the change in unrecognized tax benefits."
       }
      }
     },
     "auth_ref": [
      "r855",
      "r947"
     ]
    },
    "nwpx_ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Unvested Restricted Stock Units and Performance Share Awards Activity [Table Text Block]",
        "documentation": "Tabular disclosure of the change in restricted stock units (RSUs) and performance share awards (PSAs)."
       }
      }
     },
     "auth_ref": []
    },
    "srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "SEC Schedule, 12-09, Schedule of Valuation and Qualifying Accounts Disclosure [Text Block]",
        "documentation": "The entire disclosure for valuation and qualifying accounts and reserves."
       }
      }
     },
     "auth_ref": [
      "r193",
      "r274"
     ]
    },
    "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]",
        "documentation": "Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets."
       }
      }
     },
     "auth_ref": [
      "r70"
     ]
    },
    "nwpx_SecuredOvernightFinancingRateSOFRMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "SecuredOvernightFinancingRateSOFRMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Secured Overnight Financing Rate (SOFR) [Member]",
        "documentation": "Related to Secured Overnight Financing Rate (SOFR)."
       }
      }
     },
     "auth_ref": []
    },
    "dei_Security12bTitle": {
     "xbrltype": "securityTitleItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "Security12bTitle",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Title of 12(b) Security",
        "documentation": "Title of a 12(b) registered security."
       }
      }
     },
     "auth_ref": [
      "r871"
     ]
    },
    "dei_SecurityExchangeName": {
     "xbrltype": "edgarExchangeCodeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "SecurityExchangeName",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Security Exchange Name",
        "documentation": "Name of the Exchange on which a security is registered."
       }
      }
     },
     "auth_ref": [
      "r873"
     ]
    },
    "us-gaap_SegmentDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SegmentDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Segments [Domain]",
        "documentation": "Components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity."
       }
      }
     },
     "auth_ref": [
      "r299",
      "r302",
      "r303",
      "r304",
      "r305",
      "r306",
      "r307",
      "r308",
      "r309",
      "r310",
      "r311",
      "r312",
      "r313",
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r325",
      "r331",
      "r344",
      "r345",
      "r346",
      "r347",
      "r348",
      "r349",
      "r350",
      "r351",
      "r352",
      "r362",
      "r363",
      "r682",
      "r683",
      "r684",
      "r685",
      "r686",
      "r687",
      "r688",
      "r689",
      "r690",
      "r691",
      "r692",
      "r831",
      "r896",
      "r974"
     ]
    },
    "srt_SegmentGeographicalDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "SegmentGeographicalDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Geographical [Domain]",
        "documentation": "Geographical area."
       }
      }
     },
     "auth_ref": [
      "r194",
      "r195",
      "r196",
      "r197",
      "r198",
      "r199",
      "r200",
      "r201",
      "r202",
      "r329",
      "r330",
      "r713",
      "r716",
      "r718",
      "r778",
      "r780",
      "r783",
      "r795",
      "r800",
      "r801",
      "r802",
      "r803",
      "r804",
      "r805",
      "r806",
      "r807",
      "r808",
      "r813",
      "r840",
      "r861",
      "r942",
      "r974"
     ]
    },
    "us-gaap_SegmentReportingDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SegmentReportingDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Segment Reporting Disclosure [Text Block]",
        "documentation": "The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments."
       }
      }
     },
     "auth_ref": [
      "r298",
      "r299",
      "r300",
      "r301",
      "r302",
      "r314",
      "r319",
      "r323",
      "r324",
      "r325",
      "r326",
      "r327",
      "r328",
      "r331"
     ]
    },
    "us-gaap_SellingGeneralAndAdministrativeExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SellingGeneralAndAdministrativeExpense",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations": {
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Selling, general, and administrative expense",
        "documentation": "The aggregate total costs related to selling a firm's product and services, as well as all other general and administrative expenses. Direct selling expenses (for example, credit, warranty, and advertising) are expenses that can be directly linked to the sale of specific products. Indirect selling expenses are expenses that cannot be directly linked to the sale of specific products, for example telephone expenses, Internet, and postal charges. General and administrative expenses include salaries of non-sales personnel, rent, utilities, communication, etc."
       }
      }
     },
     "auth_ref": [
      "r140"
     ]
    },
    "us-gaap_SellingGeneralAndAdministrativeExpensesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SellingGeneralAndAdministrativeExpensesMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Selling, General and Administrative Expenses [Member]",
        "documentation": "Primary financial statement caption encompassing selling, general and administrative expense."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShareBasedCompensation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensation",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 10.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensation",
        "terseLabel": "Share-based compensation expense",
        "documentation": "Amount of noncash expense for share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r11"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
        "negatedLabel": "Unvested RSUs and PSAs canceled (in shares)",
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r536"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Unvested RSUs and PSAs canceled, weighted average grant date fair value (in dollars per share)",
        "documentation": "Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event."
       }
      }
     },
     "auth_ref": [
      "r536"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "RSUs and PSAs granted (in shares)",
        "terseLabel": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period (in shares)",
        "documentation": "The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)."
       }
      }
     },
     "auth_ref": [
      "r534"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "RSUs and PSAs granted (in dollars per share)",
        "terseLabel": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share)",
        "documentation": "The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)."
       }
      }
     },
     "auth_ref": [
      "r534"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
        "periodStartLabel": "Unvested RSUs and PSAs (in shares)",
        "periodEndLabel": "Unvested RSUs and PSAs (in shares)",
        "documentation": "The number of non-vested equity-based payment instruments, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date."
       }
      }
     },
     "auth_ref": [
      "r531",
      "r532"
     ]
    },
    "nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance",
        "terseLabel": "Share Based Compensation Arrangement By Share Based Payment Award Equity Instruments Other Than Options Nonvested Number At Target Level Of Performance (in shares)",
        "documentation": "The number of non-vested equity-based payment instruments at a target level of performance, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
        "periodStartLabel": "Unvested RSUs and PSAs, weighted average grant date fair value (in dollars per share)",
        "periodEndLabel": "Unvested RSUs and PSAs, weighted average grant date fair value (in dollars per share)",
        "documentation": "Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options."
       }
      }
     },
     "auth_ref": [
      "r531",
      "r532"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
        "negatedLabel": "RSUs and PSAs vested (in shares)",
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r535"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue",
        "terseLabel": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Fair Value",
        "documentation": "Fair value of share-based awards for which the grantee gained the right by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash."
       }
      }
     },
     "auth_ref": [
      "r538"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "RSUs and PSAs vested, weighted average grant date fair value (in dollars per share)",
        "documentation": "The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement."
       }
      }
     },
     "auth_ref": [
      "r535"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Award Type [Domain]",
        "documentation": "Award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r519",
      "r520",
      "r521",
      "r523",
      "r524",
      "r525",
      "r526",
      "r527",
      "r528",
      "r529",
      "r530",
      "r531",
      "r532",
      "r533",
      "r534",
      "r535",
      "r536",
      "r537",
      "r538",
      "r539",
      "r540",
      "r543",
      "r544",
      "r545",
      "r546",
      "r547"
     ]
    },
    "us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareBasedCompensationOptionAndIncentivePlansPolicy",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Payment Arrangement [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for award under share-based payment arrangement. Includes, but is not limited to, methodology and assumption used in measuring cost."
       }
      }
     },
     "auth_ref": [
      "r516",
      "r522",
      "r541",
      "r542",
      "r543",
      "r544",
      "r547",
      "r556",
      "r557",
      "r558",
      "r559"
     ]
    },
    "us-gaap_ShareRepurchaseProgramAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareRepurchaseProgramAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share Repurchase Program [Axis]",
        "documentation": "Information by share repurchase program."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShareRepurchaseProgramDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShareRepurchaseProgramDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share Repurchase Program [Domain]",
        "documentation": "Name of the share repurchase program."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_ShareRepurchaseProgramMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "ShareRepurchaseProgramMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share Repurchase Program [Member]",
        "documentation": "Represents information regarding the share repurchase program."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SharesOutstanding",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_SharesOutstanding",
        "periodStartLabel": "Balances (in shares)",
        "periodEndLabel": "Balances (in shares)",
        "documentation": "Number of shares issued which are neither cancelled nor held in the treasury."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShortTermBorrowings": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShortTermBorrowings",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShortTermBorrowings",
        "terseLabel": "Short-Term Debt",
        "documentation": "Reflects the total carrying amount as of the balance sheet date of debt having initial terms less than one year or the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r121",
      "r170",
      "r857",
      "r971"
     ]
    },
    "us-gaap_ShortTermLeaseCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ShortTermLeaseCost",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Short-term lease cost",
        "label": "us-gaap_ShortTermLeaseCost",
        "documentation": "Amount of short-term lease cost, excluding expense for lease with term of one month or less."
       }
      }
     },
     "auth_ref": [
      "r641",
      "r856"
     ]
    },
    "us-gaap_SignificantAccountingPoliciesTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SignificantAccountingPoliciesTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Significant Accounting Policies [Text Block]",
        "documentation": "The entire disclosure for all significant accounting policies of the reporting entity."
       }
      }
     },
     "auth_ref": [
      "r146",
      "r258"
     ]
    },
    "us-gaap_StateAndLocalJurisdictionMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StateAndLocalJurisdictionMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "State and Local Jurisdiction [Member]",
        "documentation": "Designated tax department of a state or local government entitled to levy and collect income taxes from the entity."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementBusinessSegmentsAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StatementBusinessSegmentsAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Segments [Axis]",
        "documentation": "Information by business segments."
       }
      }
     },
     "auth_ref": [
      "r215",
      "r299",
      "r302",
      "r303",
      "r304",
      "r305",
      "r306",
      "r307",
      "r308",
      "r309",
      "r310",
      "r311",
      "r312",
      "r313",
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r325",
      "r331",
      "r344",
      "r345",
      "r346",
      "r347",
      "r348",
      "r349",
      "r350",
      "r351",
      "r352",
      "r360",
      "r362",
      "r363",
      "r682",
      "r683",
      "r684",
      "r685",
      "r686",
      "r687",
      "r688",
      "r689",
      "r690",
      "r691",
      "r692",
      "r831",
      "r896",
      "r974"
     ]
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StatementEquityComponentsAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Equity Components [Axis]",
        "documentation": "Information by component of equity."
       }
      }
     },
     "auth_ref": [
      "r23",
      "r40",
      "r214",
      "r245",
      "r246",
      "r247",
      "r275",
      "r276",
      "r277",
      "r279",
      "r285",
      "r287",
      "r297",
      "r334",
      "r335",
      "r425",
      "r553",
      "r554",
      "r555",
      "r582",
      "r583",
      "r606",
      "r607",
      "r608",
      "r609",
      "r610",
      "r611",
      "r614",
      "r623",
      "r624",
      "r625",
      "r626",
      "r627",
      "r628",
      "r648",
      "r694",
      "r695",
      "r696",
      "r709",
      "r771"
     ]
    },
    "srt_StatementGeographicalAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "StatementGeographicalAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Geographical [Axis]",
        "documentation": "Information by geographical components."
       }
      }
     },
     "auth_ref": [
      "r194",
      "r203",
      "r329",
      "r330",
      "r713",
      "r716",
      "r718",
      "r778",
      "r780",
      "r783",
      "r795",
      "r797",
      "r800",
      "r801",
      "r802",
      "r803",
      "r804",
      "r805",
      "r806",
      "r807",
      "r808",
      "r813",
      "r840",
      "r861",
      "r942",
      "r974"
     ]
    },
    "us-gaap_StatementLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StatementLineItems",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization",
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details",
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r275",
      "r276",
      "r277",
      "r297",
      "r656",
      "r703",
      "r710",
      "r722",
      "r723",
      "r724",
      "r725",
      "r726",
      "r727",
      "r730",
      "r733",
      "r734",
      "r735",
      "r736",
      "r737",
      "r738",
      "r739",
      "r740",
      "r741",
      "r744",
      "r745",
      "r746",
      "r747",
      "r748",
      "r750",
      "r753",
      "r754",
      "r757",
      "r758",
      "r759",
      "r760",
      "r761",
      "r762",
      "r763",
      "r764",
      "r765",
      "r766",
      "r767",
      "r768",
      "r771",
      "r862"
     ]
    },
    "us-gaap_StatementOfCashFlowsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StatementOfCashFlowsAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Cash Flows [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementOfFinancialPositionAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StatementOfFinancialPositionAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Financial Position [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StatementOfIncomeAndComprehensiveIncomeAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Comprehensive Income [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementOfStockholdersEquityAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StatementOfStockholdersEquityAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Stockholders' Equity [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StatementTable",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization",
      "http://www.nwpipe.com/20231231/role/statement-note-1-organization-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details",
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans",
      "http://www.nwpipe.com/20231231/role/statement-note-13-retirement-plans-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-rsu-and-psa-activity-details",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-sharebased-compensation-expense-details",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies",
      "http://www.nwpipe.com/20231231/role/statement-note-15-commitments-and-contingencies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-1-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-2-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-income-loss-from-continuing-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-pro-forma-summary-details",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-components-of-inventories-details",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-property-plant-and-equipment-details",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-future-maturities-of-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details",
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement [Table]",
        "documentation": "Schedule reflecting a Statement of Income, Statement of Cash Flows, Statement of Financial Position, Statement of Shareholders' Equity and Other Comprehensive Income, or other statement as needed."
       }
      }
     },
     "auth_ref": [
      "r275",
      "r276",
      "r277",
      "r297",
      "r656",
      "r703",
      "r710",
      "r722",
      "r723",
      "r724",
      "r725",
      "r726",
      "r727",
      "r730",
      "r733",
      "r734",
      "r735",
      "r736",
      "r737",
      "r738",
      "r739",
      "r740",
      "r741",
      "r744",
      "r745",
      "r746",
      "r747",
      "r748",
      "r750",
      "r753",
      "r754",
      "r757",
      "r758",
      "r759",
      "r760",
      "r761",
      "r762",
      "r763",
      "r764",
      "r765",
      "r766",
      "r767",
      "r768",
      "r771",
      "r862"
     ]
    },
    "nwpx_StockAwardsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "StockAwardsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stock Awards [Member]",
        "documentation": "Represents stock awards."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Issuance of common stock under stock compensation plans, net of tax withholdings (in shares)",
        "documentation": "Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP)."
       }
      }
     },
     "auth_ref": [
      "r23",
      "r127",
      "r128",
      "r158"
     ]
    },
    "us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StockIssuedDuringPeriodValueShareBasedCompensation",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation",
        "negatedLabel": "Issuance of common stock under stock compensation plans, net of tax withholdings",
        "documentation": "Value, after forfeiture, of shares issued under share-based payment arrangement. Excludes employee stock ownership plan (ESOP)."
       }
      }
     },
     "auth_ref": [
      "r77",
      "r127",
      "r128",
      "r158"
     ]
    },
    "us-gaap_StockRepurchaseProgramAuthorizedAmount1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StockRepurchaseProgramAuthorizedAmount1",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_StockRepurchaseProgramAuthorizedAmount1",
        "terseLabel": "Stock Repurchase Program, Authorized Amount",
        "documentation": "Amount of stock repurchase plan authorized."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1",
        "terseLabel": "Stock Repurchase Program, Remaining Authorized Repurchase Amount",
        "documentation": "Amount remaining of a stock repurchase plan authorized."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StockRepurchasedAndRetiredDuringPeriodShares": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StockRepurchasedAndRetiredDuringPeriodShares",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_StockRepurchasedAndRetiredDuringPeriodShares",
        "terseLabel": "Stock Repurchased and Retired During Period, Shares (in shares)",
        "negatedLabel": "Repurchase of common stock (in shares)",
        "documentation": "Number of shares that have been repurchased and retired during the period."
       }
      }
     },
     "auth_ref": [
      "r23",
      "r127",
      "r128",
      "r158"
     ]
    },
    "us-gaap_StockRepurchasedAndRetiredDuringPeriodValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StockRepurchasedAndRetiredDuringPeriodValue",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_StockRepurchasedAndRetiredDuringPeriodValue",
        "terseLabel": "Stock Repurchased and Retired During Period, Value",
        "negatedLabel": "Repurchase of common stock",
        "documentation": "Equity impact of the value of stock that has been repurchased and retired during the period. The excess of the purchase price over par value can be charged against retained earnings (once the excess is fully allocated to additional paid in capital)."
       }
      }
     },
     "auth_ref": [
      "r23",
      "r127",
      "r128",
      "r158"
     ]
    },
    "us-gaap_StockholdersEquity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StockholdersEquity",
     "crdr": "credit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets": {
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets",
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_StockholdersEquity",
        "totalLabel": "Total stockholders\u2019 equity",
        "periodStartLabel": "Balance",
        "periodEndLabel": "Balances, December 31, 2022",
        "documentation": "Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest."
       }
      }
     },
     "auth_ref": [
      "r128",
      "r131",
      "r132",
      "r147",
      "r732",
      "r749",
      "r772",
      "r773",
      "r857",
      "r870",
      "r910",
      "r928",
      "r955",
      "r981"
     ]
    },
    "us-gaap_StockholdersEquityAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StockholdersEquityAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-balance-sheets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stockholders\u2019 equity:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StockholdersEquityNoteDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StockholdersEquityNoteDisclosureTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Equity [Text Block]",
        "documentation": "The entire disclosure for equity."
       }
      }
     },
     "auth_ref": [
      "r157",
      "r260",
      "r411",
      "r413",
      "r415",
      "r416",
      "r417",
      "r418",
      "r419",
      "r420",
      "r421",
      "r422",
      "r423",
      "r424",
      "r425",
      "r613",
      "r774",
      "r776",
      "r796"
     ]
    },
    "us-gaap_StockholdersEquityPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "StockholdersEquityPolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stockholders' Equity, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for its capital stock transactions, including dividends and accumulated other comprehensive income."
       }
      }
     },
     "auth_ref": [
      "r14",
      "r775"
     ]
    },
    "us-gaap_SubsidiarySaleOfStockAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SubsidiarySaleOfStockAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity",
      "http://www.nwpipe.com/20231231/role/statement-note-12-stockholders-equity-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Sale of Stock [Axis]",
        "documentation": "Information by type of sale of the entity's stock."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_SummaryOfValuationAndQualifyingAccountsTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "SummaryOfValuationAndQualifyingAccountsTableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Summary of Valuation and Qualifying Accounts [Table Text Block]",
        "documentation": "A schedule of allowance and reserve accounts including their beginning and ending balances, as well as a reconciliation by type of activity during the period. Alternatively, disclosure of the required information may be within the footnotes to the financial statements or a supplemental schedule to the financial statements."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SupplementalCashFlowInformationAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "SupplementalCashFlowInformationAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Supplemental disclosure of cash flow information:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TableTextBlock": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "TableTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-10-fair-value-measurements-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-18-accumulated-other-comprehensive-loss-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-19-segment-information-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-3-business-combinations-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-4-inventories-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-5-property-and-equipment-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-tables",
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-tables",
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_TableTextBlock",
        "terseLabel": "Notes Tables"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TaxCreditCarryforwardAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "TaxCreditCarryforwardAmount",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_TaxCreditCarryforwardAmount",
        "terseLabel": "Tax Credit Carryforward, Amount",
        "documentation": "The amount of the tax credit carryforward, before tax effects, available to reduce future taxable income under enacted tax laws."
       }
      }
     },
     "auth_ref": [
      "r82"
     ]
    },
    "nwpx_TaxCreditCarryforwardExpirationYear": {
     "xbrltype": "gYearItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "TaxCreditCarryforwardExpirationYear",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "nwpx_TaxCreditCarryforwardExpirationYear",
        "terseLabel": "Tax Credit Carryforward, Expiration Year",
        "documentation": "Expiration year of the tax credit carryforward."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_The1941InterestRateSwapMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "The1941InterestRateSwapMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "The 1.941% Interest Rate Swap [Member]",
        "documentation": "Relating to the 1.941% interest rate swap."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_The296InterestRateSwapMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "The296InterestRateSwapMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities",
      "http://www.nwpipe.com/20231231/role/statement-note-11-derivative-instruments-and-hedging-activities-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "The 2.96% Interest Rate Swap [Member]",
        "documentation": "Relating to the 2.96% interest rate swap."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TimingOfTransferOfGoodOrServiceAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "TimingOfTransferOfGoodOrServiceAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Timing of Transfer of Good or Service [Axis]",
        "documentation": "Information by timing of transfer of good or service to customer."
       }
      }
     },
     "auth_ref": [
      "r842",
      "r942"
     ]
    },
    "us-gaap_TimingOfTransferOfGoodOrServiceDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "TimingOfTransferOfGoodOrServiceDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Timing of Transfer of Good or Service [Domain]",
        "documentation": "Timing of transfer of good or service to customer. Includes, but is not limited to, at point in time or over time."
       }
      }
     },
     "auth_ref": [
      "r842",
      "r942"
     ]
    },
    "srt_TitleOfIndividualAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "TitleOfIndividualAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Title of Individual [Axis]",
        "documentation": "Information by title of individual or nature of relationship to individual or group of individuals."
       }
      }
     },
     "auth_ref": [
      "r923",
      "r961"
     ]
    },
    "srt_TitleOfIndividualWithRelationshipToEntityDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2023",
     "localname": "TitleOfIndividualWithRelationshipToEntityDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation",
      "http://www.nwpipe.com/20231231/role/statement-note-14-sharebased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Title of Individual [Domain]",
        "documentation": "Title of individual, or nature of relationship to individual or group of individuals."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TrademarksAndTradeNamesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "TrademarksAndTradeNamesMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-business-combinations-intangible-assets-acquired-details",
      "http://www.nwpipe.com/20231231/role/statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Trademarks and Trade Names [Member]",
        "documentation": "Rights acquired through registration of a trademark to gain or protect exclusive use of a business name, symbol or other device or style, or rights either acquired through registration of a business name to gain or protect exclusive use thereof."
       }
      }
     },
     "auth_ref": [
      "r92"
     ]
    },
    "dei_TradingSymbol": {
     "xbrltype": "tradingSymbolItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2023",
     "localname": "TradingSymbol",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Trading Symbol",
        "documentation": "Trading symbol of an instrument as listed on an exchange."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TransferredAtPointInTimeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "TransferredAtPointInTimeMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Transferred at Point in Time [Member]",
        "documentation": "Contract with customer in which good or service is transferred at point in time."
       }
      }
     },
     "auth_ref": [
      "r842"
     ]
    },
    "us-gaap_TransferredOverTimeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "TransferredOverTimeMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-disaggregation-of-revenue-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Transferred over Time [Member]",
        "documentation": "Contract with customer in which good or service is transferred over time."
       }
      }
     },
     "auth_ref": [
      "r842"
     ]
    },
    "country_US": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/country/2023",
     "localname": "US",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "UNITED STATES"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_UnrecognizedTaxBenefits": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "UnrecognizedTaxBenefits",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_UnrecognizedTaxBenefits",
        "periodStartLabel": "Unrecognized income tax benefits, beginning of year",
        "periodEndLabel": "Unrecognized income tax benefits, end of year",
        "documentation": "Amount of unrecognized tax benefits."
       }
      }
     },
     "auth_ref": [
      "r562",
      "r571"
     ]
    },
    "us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued",
        "terseLabel": "Unrecognized Tax Benefits, Income Tax Penalties Accrued",
        "documentation": "Amount of statutory penalties accrued for a tax position claimed or expected to be claimed by the entity, in its tax return."
       }
      }
     },
     "auth_ref": [
      "r946"
     ]
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Increases for positions taken in prior years",
        "documentation": "Amount of increase in unrecognized tax benefits resulting from tax positions taken in prior period tax returns."
       }
      }
     },
     "auth_ref": [
      "r572"
     ]
    },
    "us-gaap_UseOfEstimates": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "UseOfEstimates",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Use of Estimates, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles."
       }
      }
     },
     "auth_ref": [
      "r60",
      "r61",
      "r62",
      "r180",
      "r181",
      "r184",
      "r185"
     ]
    },
    "us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ValuationAllowanceOfDeferredTaxAssetsMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "SEC Schedule, 12-09, Valuation Allowance, Deferred Tax Asset [Member]",
        "documentation": "Valuation allowance of deferred tax asset attributable to deductible temporary difference and carryforward."
       }
      }
     },
     "auth_ref": [
      "r912",
      "r913",
      "r914",
      "r915",
      "r916"
     ]
    },
    "us-gaap_ValuationAllowancesAndReservesBalance": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ValuationAllowancesAndReservesBalance",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ValuationAllowancesAndReservesBalance",
        "periodStartLabel": "Balance at Beginning of Period",
        "periodEndLabel": "Balance at End of Period",
        "documentation": "Amount of valuation and qualifying accounts and reserves."
       }
      }
     },
     "auth_ref": [
      "r268",
      "r273"
     ]
    },
    "us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ValuationAllowancesAndReservesChargedToCostAndExpense",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Charged to Profit and Loss",
        "documentation": "Amount of increase in valuation and qualifying accounts and reserves from charge to cost and expense."
       }
      }
     },
     "auth_ref": [
      "r271"
     ]
    },
    "us-gaap_ValuationAllowancesAndReservesDeductions": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ValuationAllowancesAndReservesDeductions",
     "crdr": "debit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ValuationAllowancesAndReservesDeductions",
        "negatedLabel": "Deduction from Reserves",
        "documentation": "Amount of decrease in valuation and qualifying accounts and reserves."
       }
      }
     },
     "auth_ref": [
      "r272"
     ]
    },
    "us-gaap_ValuationAllowancesAndReservesDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ValuationAllowancesAndReservesDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves [Domain]",
        "documentation": "Valuation and qualifying accounts and reserves."
       }
      }
     },
     "auth_ref": [
      "r268",
      "r269",
      "r270",
      "r272",
      "r273"
     ]
    },
    "us-gaap_ValuationAllowancesAndReservesTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "ValuationAllowancesAndReservesTypeAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves Type [Axis]",
        "documentation": "Information by valuation and qualifying accounts and reserves."
       }
      }
     },
     "auth_ref": [
      "r268",
      "r269",
      "r270",
      "r272",
      "r273"
     ]
    },
    "us-gaap_VariableLeaseCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "VariableLeaseCost",
     "crdr": "debit",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-9-leases-lease-cost-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Variable lease cost",
        "label": "us-gaap_VariableLeaseCost",
        "documentation": "Amount of variable lease cost, excluded from lease liability, recognized when obligation for payment is incurred for finance and operating leases."
       }
      }
     },
     "auth_ref": [
      "r642",
      "r856"
     ]
    },
    "us-gaap_VariableRateAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "VariableRateAxis",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Variable Rate [Axis]",
        "documentation": "Information by type of variable rate."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_VariableRateDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "VariableRateDomain",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt",
      "http://www.nwpipe.com/20231231/role/statement-note-7-current-debt-details-textual",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Variable Rate [Domain]",
        "documentation": "Interest rate that fluctuates over time as a result of an underlying benchmark interest rate or index."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "WeightedAverageNumberDilutedSharesOutstandingAdjustment",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details": {
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Effect of potentially dilutive common shares (1) (in shares)",
        "documentation": "The sum of dilutive potential common shares or units used in the calculation of the diluted per-share or per-unit computation."
       }
      }
     },
     "auth_ref": [
      "r920"
     ]
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "WeightedAverageNumberOfDilutedSharesOutstanding",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
        "terseLabel": "Diluted (in shares)",
        "totalLabel": "Diluted weighted-average common shares outstanding (in shares)",
        "documentation": "The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period."
       }
      }
     },
     "auth_ref": [
      "r289",
      "r294"
     ]
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "WeightedAverageNumberOfSharesOutstandingAbstract",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Shares used in per share calculations:"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "WeightedAverageNumberOfSharesOutstandingBasic",
     "calculation": {
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details": {
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-consolidated-statements-of-operations",
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Basic (in shares)",
        "documentation": "Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period."
       }
      }
     },
     "auth_ref": [
      "r288",
      "r294"
     ]
    },
    "nwpx_WellsFargoBankNAMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "WellsFargoBankNAMember",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement",
      "http://www.nwpipe.com/20231231/role/statement-note-8-credit-agreement-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Wells Fargo Bank, N.A. [Member]",
        "documentation": "Related to the lender Wells Fargo Bank, N.A."
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_WorkersCompensationInsurancePolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "WorkersCompensationInsurancePolicyTextBlock",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Workers Compensation Insurance [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for workers compensation insurance and calculation of liability balance."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_WorkersCompensationLiabilityCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "WorkersCompensationLiabilityCurrent",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_WorkersCompensationLiabilityCurrent",
        "terseLabel": "Workers' Compensation Liability, Current",
        "documentation": "Carrying value as of the balance sheet date of obligations and payables pertaining to claims incurred of a workers compensation nature. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r34"
     ]
    },
    "us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "WorkersCompensationLiabilityCurrentAndNoncurrent",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_WorkersCompensationLiabilityCurrentAndNoncurrent",
        "terseLabel": "Workers' Compensation Liability",
        "documentation": "Carrying value as of the balance sheet date of obligations and payables pertaining to claims incurred of a workers compensation nature."
       }
      }
     },
     "auth_ref": [
      "r123",
      "r124",
      "r172"
     ]
    },
    "us-gaap_WorkersCompensationLiabilityNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2023",
     "localname": "WorkersCompensationLiabilityNoncurrent",
     "crdr": "credit",
     "presentation": [
      "http://www.nwpipe.com/20231231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_WorkersCompensationLiabilityNoncurrent",
        "terseLabel": "Workers' Compensation Liability, Noncurrent",
        "documentation": "Carrying value as of the balance sheet date of obligations and payables pertaining to claims incurred of a workers compensation nature. Used to reflect the noncurrent portion of the liabilities (due beyond one year; or beyond one operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r37"
     ]
    },
    "nwpx_statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-10-fair-value-measurements-assets-and-liabilities-measured-at-fair-value-on-recurring-basis-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 10 - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on Recurring Basis (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-10-fair-value-measurements-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-10-fair-value-measurements-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 10 - Fair Value Measurements"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-11-derivative-instruments-and-hedging-activities-summary-of-gains-losses-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 11 - Derivative Instruments and Hedging Activities - Summary of Gains (Losses) (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-11-derivative-instruments-and-hedging-activities-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-11-derivative-instruments-and-hedging-activities-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 11 - Derivative Instruments and Hedging Activities"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-14-sharebased-compensation-rsu-and-psa-activity-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 14 - Share-based Compensation - RSU and PSA Activity (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-14-sharebased-compensation-sharebased-compensation-expense-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 14 - Share-based Compensation - Share-based Compensation Expense (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-14-sharebased-compensation-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-14-sharebased-compensation-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 14 - Share-based Compensation"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-16-revenue-contract-with-customer-assets-and-liabilities-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 16 - Revenue - Contract With Customer Assets and Liabilities (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-16-revenue-disaggregation-of-revenue-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-16-revenue-disaggregation-of-revenue-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 16 - Revenue - Disaggregation of Revenue (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-16-revenue-net-sales-from-continuing-operations-by-geographic-region-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 16 - Revenue - Net Sales From Continuing Operations by Geographic Region (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-16-revenue-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-16-revenue-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 16 - Revenue"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-17-income-taxes-effective-income-tax-rate-reconciliation-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Income Taxes - Effective Income Tax Rate Reconciliation (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-17-income-taxes-income-loss-from-continuing-operations-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Income Taxes - Income (Loss) from Continuing Operations (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-17-income-taxes-summary-of-changes-in-unrecognized-tax-benefits-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Income Taxes - Summary of Changes in Unrecognized Tax Benefits (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-17-income-taxes-summary-of-components-of-income-tax-expense-for-continuing-operations-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Income Taxes - Summary of Components of Income Tax Expense for Continuing Operations (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-17-income-taxes-summary-of-current-and-noncurrent-deferred-tax-assets-and-liabilities-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Income Taxes - Summary of Current and Noncurrent Deferred Tax Assets and Liabilities (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-17-income-taxes-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-17-income-taxes-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Income Taxes"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-18-accumulated-other-comprehensive-loss-components-of-accumulated-other-comprehensive-loss-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 18 - Accumulated Other Comprehensive Loss - Components of Accumulated Other Comprehensive Loss (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-18-accumulated-other-comprehensive-loss-reclassification-of-accumulated-other-comprehensive-loss-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 18 - Accumulated Other Comprehensive Loss - Reclassification of Accumulated Other Comprehensive Loss (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-18-accumulated-other-comprehensive-loss-summary-of-accumulated-other-comprehensive-loss-details-parentheticals",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 18 - Accumulated Other Comprehensive Loss - Summary of Accumulated Other Comprehensive Loss (Details) (Parentheticals)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-18-accumulated-other-comprehensive-loss-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-18-accumulated-other-comprehensive-loss-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 18 - Accumulated Other Comprehensive Loss"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-19-segment-information-information-related-to-the-operations-of-the-companys-operating-segments-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 19 - Segment Information - Information Related to the Operations of the Company's Operating Segments (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-19-segment-information-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-19-segment-information-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 19 - Segment Information"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-2-business-combinations-intangible-assets-acquired-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-2-business-combinations-intangible-assets-acquired-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 2 - Business Combinations - Intangible Assets Acquired (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-2-summary-of-significant-accounting-policies-loss-per-basic-and-diluted-weighted-average-common-share-outstanding-for-continuing-and-discontinued-operations-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 2 - Summary of Significant Accounting Policies - Loss Per Basic and Diluted Weighted Average Common Share Outstanding for Continuing and Discontinued Operations (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-2-summary-of-significant-accounting-policies-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-2-summary-of-significant-accounting-policies-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 2 - Summary of Significant Accounting Policies"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-3-business-combinations-assets-acquired-and-liabilities-assumed-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 3 - Business Combinations - Assets Acquired and Liabilities Assumed (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-3-business-combinations-pro-forma-summary-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-3-business-combinations-pro-forma-summary-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 3 - Business Combinations - Pro Forma Summary (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-3-business-combinations-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-3-business-combinations-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 3 - Business Combinations"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-4-inventories-components-of-inventories-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-4-inventories-components-of-inventories-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 4 - Inventories - Components of Inventories (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-4-inventories-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-4-inventories-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 4 - Inventories"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-5-property-and-equipment-property-plant-and-equipment-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 5 - Property and Equipment - Property, Plant and Equipment (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-5-property-and-equipment-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-5-property-and-equipment-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 5 - Property and Equipment"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-6-goodwill-and-intangible-assets-summary-of-estimated-amortization-expense-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 6 - Goodwill and Intangible Assets - Summary of Estimated Amortization Expense (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-6-goodwill-and-intangible-assets-summary-of-intangible-assets-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 6 - Goodwill and Intangible Assets - Summary of Intangible Assets (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-6-goodwill-and-intangible-assets-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-6-goodwill-and-intangible-assets-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 6 - Goodwill and Intangible Assets"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-9-leases-future-maturities-of-lease-liabilities-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Leases - Future Maturities of Lease Liabilities (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-9-leases-lease-cost-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-9-leases-lease-cost-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Leases - Lease Cost (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-9-leases-lease-terms-and-discount-rates-for-lease-liabilities-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Leases - Lease Terms and Discount Rates for Lease Liabilities (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-9-leases-leases-recorded-on-the-consolidated-balance-sheet-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Leases - Leases Recorded on the Consolidated Balance Sheet (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-9-leases-other-information-related-to-operating-and-finance-leases-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Leases - Other Information Related to Operating and Finance Leases (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-note-9-leases-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-note-9-leases-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Leases"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-schedule-ii-valuation-and-qualifying-accounts-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule II - Valuation and Qualifying Accounts"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-schedule-ii-valuation-and-qualifying-accounts-valuation-and-qualifying-accounts-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule II - Valuation and Qualifying Accounts - Valuation and Qualifying Accounts (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "nwpx_statement-statement-significant-accounting-policies-policies": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.nwpipe.com/20231231",
     "localname": "statement-statement-significant-accounting-policies-policies",
     "lang": {
      "en-us": {
       "role": {
        "label": "Significant Accounting Policies"
       }
      }
     },
     "auth_ref": []
    }
   }
  }
 },
 "std_ref": {
  "r0": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "25",
   "Paragraph": "1",
   "SubTopic": "20",
   "Topic": "940",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481913/940-20-25-1"
  },
  "r1": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "25",
   "Paragraph": "16",
   "SubTopic": "10",
   "Topic": "805",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479405/805-10-25-16"
  },
  "r2": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "30",
   "Paragraph": "7",
   "SubTopic": "30",
   "Topic": "805",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479637/805-30-30-7"
  },
  "r3": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "30",
   "Paragraph": "8",
   "SubTopic": "30",
   "Topic": "805",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479637/805-30-30-8"
  },
  "r4": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "SubTopic": "230",
   "Topic": "830",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481877/830-230-45-1"
  },
  "r5": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10A",
   "SubTopic": "10",
   "Topic": "220",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A"
  },
  "r6": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10A",
   "Subparagraph": "(i),(j),(k)",
   "SubTopic": "10",
   "Topic": "220",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A"
  },
  "r7": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10A",
   "Subparagraph": "(i-k)",
   "SubTopic": "10",
   "Topic": "220",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A"
  },
  "r8": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "12",
   "SubTopic": "10",
   "Topic": "220",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-12"
  },
  "r9": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "SubTopic": "10",
   "Topic": "810",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-20"
  },
  "r10": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "21B",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-21B"
  },
  "r11": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28"
  },
  "r12": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(b)",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28"
  },
  "r13": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "SubTopic": "10",
   "Topic": "360",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-1"
  },
  "r14": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "SubTopic": "10",
   "Topic": "505",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-1"
  },
  "r15": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "SubTopic": "20",
   "Topic": "715",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r16": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "SubTopic": "30",
   "Topic": "350",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1"
  },
  "r17": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "SubTopic": "30",
   "Topic": "715",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481097/715-30-50-1"
  },
  "r18": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "SubTopic": "60",
   "Topic": "715",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480266/715-60-50-1"
  },
  "r19": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "SubTopic": "30",
   "Topic": "805",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479581/805-30-50-1"
  },
  "r20": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15",
   "Subparagraph": "(e)",
   "SubTopic": "10",
   "Topic": "740",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-15"
  },
  "r21": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(c)(3)",
   "SubTopic": "10",
   "Topic": "810",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-1A"
  },
  "r22": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(c),(3)",
   "SubTopic": "10",
   "Topic": "810",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-1A"
  },
  "r23": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "SubTopic": "10",
   "Topic": "505",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-2"
  },
  "r24": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "SubTopic": "10",
   "Topic": "815",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-2"
  },
  "r25": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "SubTopic": "80",
   "Topic": "715",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-2"
  },
  "r26": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "SubTopic": "10",
   "Topic": "280",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-4"
  },
  "r27": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "41",
   "Subparagraph": "a",
   "SubTopic": "10",
   "Topic": "280",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41"
  },
  "r28": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4D",
   "Subparagraph": "(b)",
   "SubTopic": "10",
   "Topic": "815",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4D"
  },
  "r29": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "15",
   "SubTopic": "10",
   "Topic": "220",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482739/220-10-55-15"
  },
  "r30": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(22))",
   "SubTopic": "10",
   "Topic": "210",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r31": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02.19(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r32": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02.19(b),22(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r33": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02.19-26)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r34": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02.20)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r35": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02.21)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r36": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02.22)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r37": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02.24)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r38": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02.25)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r39": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02.29)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r40": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02.29-31)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r41": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "220",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-14"
  },
  "r42": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "220",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-14A"
  },
  "r43": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "220",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-5"
  },
  "r44": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-12"
  },
  "r45": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "13",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13"
  },
  "r46": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "14",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-14"
  },
  "r47": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "15",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15"
  },
  "r48": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "15",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15"
  },
  "r49": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-4"
  },
  "r50": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-1"
  },
  "r51": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-2"
  },
  "r52": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-3"
  },
  "r53": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-4"
  },
  "r54": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-5"
  },
  "r55": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "260",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1"
  },
  "r56": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "260",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-2"
  },
  "r57": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "275",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "18",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-18"
  },
  "r58": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "275",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "18",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-18"
  },
  "r59": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "275",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "20",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-20"
  },
  "r60": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "275",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-4"
  },
  "r61": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "275",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-8"
  },
  "r62": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "275",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-9"
  },
  "r63": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "280",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "22",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r64": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "280",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "25",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-25"
  },
  "r65": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "280",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "30",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30"
  },
  "r66": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "330",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB TOPIC 5.BB)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480581/330-10-S99-2"
  },
  "r67": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "350",
   "SubTopic": "20",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r68": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "350",
   "SubTopic": "30",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482686/350-30-45-2"
  },
  "r69": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "350",
   "SubTopic": "30",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1"
  },
  "r70": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "350",
   "SubTopic": "30",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2"
  },
  "r71": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "350",
   "SubTopic": "30",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2"
  },
  "r72": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "360",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-1"
  },
  "r73": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "360",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-1"
  },
  "r74": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "470",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481573/470-10-45-13"
  },
  "r75": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "470",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481573/470-10-45-14"
  },
  "r76": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "715",
   "SubTopic": "70",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480794/715-70-50-1"
  },
  "r77": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r78": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r79": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "20",
   "Section": "55",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481089/718-20-55-12"
  },
  "r80": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "20",
   "Section": "55",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481089/718-20-55-13"
  },
  "r81": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "740",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-6"
  },
  "r82": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "740",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-3"
  },
  "r83": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "740",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-8"
  },
  "r84": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "10",
   "Section": "05",
   "Paragraph": "4",
   "Subparagraph": "(a)-(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479515/805-10-05-4"
  },
  "r85": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "10",
   "Section": "25",
   "Paragraph": "23",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479405/805-10-25-23"
  },
  "r86": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-2"
  },
  "r87": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-2"
  },
  "r88": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-3"
  },
  "r89": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "10",
   "Section": "55",
   "Paragraph": "37",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479303/805-10-55-37"
  },
  "r90": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "20",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-1"
  },
  "r91": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "20",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-4A"
  },
  "r92": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "20",
   "Section": "55",
   "Paragraph": "14",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-14"
  },
  "r93": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "20",
   "Section": "55",
   "Paragraph": "20",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-20"
  },
  "r94": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "740",
   "Section": "25",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479692/805-740-25-8"
  },
  "r95": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "740",
   "Section": "25",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479692/805-740-25-9"
  },
  "r96": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "810",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-1"
  },
  "r97": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-1"
  },
  "r98": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-1A"
  },
  "r99": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-2"
  },
  "r100": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4"
  },
  "r101": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4A"
  },
  "r102": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4A"
  },
  "r103": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4B"
  },
  "r104": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4B"
  },
  "r105": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4C",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4C"
  },
  "r106": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4C",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4C"
  },
  "r107": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4D",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4D"
  },
  "r108": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-7"
  },
  "r109": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "55",
   "Paragraph": "182",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480401/815-10-55-182"
  },
  "r110": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "30",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480870/815-30-50-1"
  },
  "r111": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "820",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2"
  },
  "r112": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "825",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "20",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-20"
  },
  "r113": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "825",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-21"
  },
  "r114": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "835",
   "SubTopic": "20",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483013/835-20-50-1"
  },
  "r115": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "835",
   "SubTopic": "30",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482925/835-30-45-2"
  },
  "r116": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "835",
   "SubTopic": "30",
   "Section": "45",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482925/835-30-45-3"
  },
  "r117": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "835",
   "SubTopic": "30",
   "Section": "55",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482949/835-30-55-8"
  },
  "r118": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "942",
   "SubTopic": "210",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03.17)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1"
  },
  "r119": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "942",
   "SubTopic": "825",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480981/942-825-50-1"
  },
  "r120": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "205",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//205/tableOfContent"
  },
  "r121": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(19)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r122": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r123": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r124": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(24))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r125": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(26)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r126": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(26)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r127": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(28))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r128": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(29))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r129": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r130": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r131": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r132": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(31))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r133": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(32))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r134": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//220/tableOfContent"
  },
  "r135": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-11"
  },
  "r136": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(10))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2"
  },
  "r137": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2"
  },
  "r138": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03.1,2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2"
  },
  "r139": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03.2(a),(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2"
  },
  "r140": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03.4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2"
  },
  "r141": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03.9)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2"
  },
  "r142": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "13",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13"
  },
  "r143": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-24"
  },
  "r144": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-25"
  },
  "r145": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28"
  },
  "r146": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "235",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//235/tableOfContent"
  },
  "r147": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 4.E)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480418/310-10-S99-2"
  },
  "r148": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "330",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 5.BB)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480581/330-10-S99-2"
  },
  "r149": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "350",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//350/tableOfContent"
  },
  "r150": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1"
  },
  "r151": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2"
  },
  "r152": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2"
  },
  "r153": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "360",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//360/tableOfContent"
  },
  "r154": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-1"
  },
  "r155": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "440",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//440/tableOfContent"
  },
  "r156": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "470",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//470/tableOfContent"
  },
  "r157": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "505",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//505/tableOfContent"
  },
  "r158": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.3-04)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480008/505-10-S99-1"
  },
  "r159": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Section": "50",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-12"
  },
  "r160": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Section": "50",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-2"
  },
  "r161": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Section": "50",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9"
  },
  "r162": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1"
  },
  "r163": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "805",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//805/tableOfContent"
  },
  "r164": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "38",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479876/805-20-55-38"
  },
  "r165": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "810",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//810/tableOfContent"
  },
  "r166": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "19",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-19"
  },
  "r167": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "815",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//815/tableOfContent"
  },
  "r168": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(10))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1"
  },
  "r169": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(11))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1"
  },
  "r170": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(13))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1"
  },
  "r171": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(15)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1"
  },
  "r172": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(15)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1"
  },
  "r173": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(16))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1"
  },
  "r174": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1"
  },
  "r175": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(15))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1"
  },
  "r176": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1"
  },
  "r177": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04.9)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1"
  },
  "r178": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "SubTopic": "20",
   "Topic": "740",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482659/740-20-45-2"
  },
  "r179": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "270",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482989/270-10-45-6"
  },
  "r180": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "SubTopic": "10",
   "Topic": "275",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-1"
  },
  "r181": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "SubTopic": "10",
   "Topic": "275",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-1"
  },
  "r182": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "SubTopic": "10",
   "Topic": "275",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-1"
  },
  "r183": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "SubTopic": "360",
   "Topic": "958",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480321/958-360-50-1"
  },
  "r184": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "SubTopic": "10",
   "Topic": "275",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-11"
  },
  "r185": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "SubTopic": "10",
   "Topic": "275",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-12"
  },
  "r186": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "606",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-13"
  },
  "r187": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(b)(1)",
   "SubTopic": "10",
   "Topic": "606",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-13"
  },
  "r188": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "SubTopic": "360",
   "Topic": "958",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480321/958-360-50-6"
  },
  "r189": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "SubTopic": "360",
   "Topic": "958",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480321/958-360-50-7"
  },
  "r190": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(b)",
   "SubTopic": "10",
   "Topic": "740",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9"
  },
  "r191": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(h))",
   "SubTopic": "10",
   "Topic": "235",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r192": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Topic": "606",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//606/tableOfContent"
  },
  "r193": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "09",
   "Publisher": "SEC"
  },
  "r194": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "28",
   "Footnote": "2",
   "Publisher": "SEC"
  },
  "r195": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "28",
   "Paragraph": "Column B",
   "Publisher": "SEC"
  },
  "r196": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "28",
   "Paragraph": "Column C",
   "Publisher": "SEC"
  },
  "r197": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "28",
   "Paragraph": "Column D",
   "Publisher": "SEC"
  },
  "r198": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "28",
   "Paragraph": "Column E",
   "Publisher": "SEC"
  },
  "r199": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "28",
   "Paragraph": "Column F",
   "Publisher": "SEC"
  },
  "r200": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "28",
   "Paragraph": "Column G",
   "Publisher": "SEC"
  },
  "r201": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "28",
   "Paragraph": "Column H",
   "Publisher": "SEC"
  },
  "r202": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "28",
   "Paragraph": "Column I",
   "Publisher": "SEC"
  },
  "r203": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "29",
   "Footnote": "4",
   "Publisher": "SEC"
  },
  "r204": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "01",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(i)",
   "Publisher": "SEC"
  },
  "r205": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "01",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(iii)(A)",
   "Publisher": "SEC"
  },
  "r206": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "01",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(iii)(B)",
   "Publisher": "SEC"
  },
  "r207": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "01",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(iv)",
   "Publisher": "SEC"
  },
  "r208": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "02",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(i)",
   "Publisher": "SEC"
  },
  "r209": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "02",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(iii)(A)",
   "Publisher": "SEC"
  },
  "r210": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "02",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(iii)(B)",
   "Publisher": "SEC"
  },
  "r211": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "02",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(iii)(C)",
   "Publisher": "SEC"
  },
  "r212": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "02",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(iv)",
   "Publisher": "SEC"
  },
  "r213": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "4",
   "Subsection": "08",
   "Paragraph": "(m)",
   "Subparagraph": "(1)(iii)",
   "Publisher": "SEC"
  },
  "r214": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "105",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479343/105-10-65-6"
  },
  "r215": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483499/205-20-50-1"
  },
  "r216": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483499/205-20-50-7"
  },
  "r217": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1"
  },
  "r218": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-5"
  },
  "r219": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483489/210-10-50-1"
  },
  "r220": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r221": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(13))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r222": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(14))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r223": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(15))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r224": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(16))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r225": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r226": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(18))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r227": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r228": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30)(a)(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r229": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r230": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r231": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r232": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r233": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483466/210-20-50-3"
  },
  "r234": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483444/210-20-55-10"
  },
  "r235": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10A",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-10A"
  },
  "r236": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-11"
  },
  "r237": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-12"
  },
  "r238": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-14A"
  },
  "r239": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1A"
  },
  "r240": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1A",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1A"
  },
  "r241": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1A"
  },
  "r242": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1B"
  },
  "r243": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482790/220-10-45-1B"
  },
  "r244": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-1"
  },
  "r245": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-4"
  },
  "r246": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-5"
  },
  "r247": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-6"
  },
  "r248": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(210.5-03(11))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2"
  },
  "r249": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(21))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2"
  },
  "r250": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(24))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2"
  },
  "r251": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(25))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483621/220-10-S99-2"
  },
  "r252": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "15",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15"
  },
  "r253": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "17",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-17"
  },
  "r254": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-24"
  },
  "r255": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-25"
  },
  "r256": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-2"
  },
  "r257": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482913/230-10-50-8"
  },
  "r258": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483426/235-10-50-1"
  },
  "r259": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r260": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(e)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r261": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r262": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(h)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r263": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(h)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r264": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(m)(1)(iii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r265": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(m)(2)(ii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r266": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(n))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r267": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-04(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-3"
  },
  "r268": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r269": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column C(1)))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r270": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column C(2)))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r271": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column C)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r272": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column D))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r273": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column E))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r274": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r275": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "23",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-23"
  },
  "r276": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-24"
  },
  "r277": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-5"
  },
  "r278": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-1"
  },
  "r279": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-1"
  },
  "r280": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-11"
  },
  "r281": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-11"
  },
  "r282": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-3"
  },
  "r283": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-4"
  },
  "r284": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-7"
  },
  "r285": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-7"
  },
  "r286": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-8"
  },
  "r287": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483443/250-10-50-9"
  },
  "r288": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-10"
  },
  "r289": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "16",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-16"
  },
  "r290": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-2"
  },
  "r291": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "60B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-60B"
  },
  "r292": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "60B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-60B"
  },
  "r293": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482689/260-10-45-7"
  },
  "r294": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1"
  },
  "r295": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1"
  },
  "r296": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "15",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482635/260-10-55-15"
  },
  "r297": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "272",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483014/272-10-45-1"
  },
  "r298": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//280/tableOfContent"
  },
  "r299": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-15"
  },
  "r300": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-21"
  },
  "r301": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-21"
  },
  "r302": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r303": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r304": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r305": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r306": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r307": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r308": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r309": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r310": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r311": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(j)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-22"
  },
  "r312": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "25",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-25"
  },
  "r313": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "25",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-25"
  },
  "r314": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "26",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-26"
  },
  "r315": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30"
  },
  "r316": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30"
  },
  "r317": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30"
  },
  "r318": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30"
  },
  "r319": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "31",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-31"
  },
  "r320": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32"
  },
  "r321": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32"
  },
  "r322": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32"
  },
  "r323": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32"
  },
  "r324": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32"
  },
  "r325": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-32"
  },
  "r326": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "34",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-34"
  },
  "r327": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "40",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-40"
  },
  "r328": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "41",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41"
  },
  "r329": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "41",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41"
  },
  "r330": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "41",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-41"
  },
  "r331": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "42",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-42"
  },
  "r332": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-4"
  },
  "r333": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "323",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481687/323-10-50-3"
  },
  "r334": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479654/326-10-65-4"
  },
  "r335": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "5",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479654/326-10-65-5"
  },
  "r336": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479344/326-20-45-1"
  },
  "r337": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-13"
  },
  "r338": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479319/326-20-50-13"
  },
  "r339": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "330",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//330/tableOfContent"
  },
  "r340": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "330",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483080/330-10-50-1"
  },
  "r341": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "330",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483080/330-10-50-4"
  },
  "r342": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//350-20/tableOfContent"
  },
  "r343": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482598/350-20-45-1"
  },
  "r344": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r345": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r346": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r347": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r348": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r349": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r350": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r351": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r352": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r353": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-2"
  },
  "r354": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1"
  },
  "r355": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1"
  },
  "r356": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-1"
  },
  "r357": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2"
  },
  "r358": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482665/350-30-50-2"
  },
  "r359": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-3"
  },
  "r360": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482099/360-10-50-3"
  },
  "r361": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "420",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482017/420-10-50-1"
  },
  "r362": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "420",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482017/420-10-50-1"
  },
  "r363": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "420",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 5.P.4(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479823/420-10-S99-2"
  },
  "r364": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "440",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482648/440-10-50-4"
  },
  "r365": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "440",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482648/440-10-50-4"
  },
  "r366": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-1"
  },
  "r367": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-4"
  },
  "r368": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-9"
  },
  "r369": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.Y.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1"
  },
  "r370": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.Y.Q4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1"
  },
  "r371": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "460",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482425/460-10-50-3"
  },
  "r372": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A"
  },
  "r373": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A"
  },
  "r374": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii)(B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A"
  },
  "r375": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iv))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A"
  },
  "r376": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A"
  },
  "r377": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B"
  },
  "r378": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B"
  },
  "r379": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B"
  },
  "r380": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B"
  },
  "r381": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B"
  },
  "r382": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(C))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B"
  },
  "r383": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iv))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B"
  },
  "r384": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1B"
  },
  "r385": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r386": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r387": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r388": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r389": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r390": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r391": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r392": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r393": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r394": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1C",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1C"
  },
  "r395": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1C",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1C"
  },
  "r396": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1C",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1C"
  },
  "r397": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1D",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1D"
  },
  "r398": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1D",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1D"
  },
  "r399": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1D",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1D"
  },
  "r400": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1E",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1E"
  },
  "r401": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1E",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1E"
  },
  "r402": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1E",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1E"
  },
  "r403": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1E",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1E"
  },
  "r404": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1F",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1F"
  },
  "r405": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1F",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1F"
  },
  "r406": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1F",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1F"
  },
  "r407": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1F",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1F"
  },
  "r408": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1I",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1I"
  },
  "r409": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1I",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1I"
  },
  "r410": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1I",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1I"
  },
  "r411": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13"
  },
  "r412": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13"
  },
  "r413": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13"
  },
  "r414": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13"
  },
  "r415": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13"
  },
  "r416": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13"
  },
  "r417": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13"
  },
  "r418": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-14"
  },
  "r419": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-14"
  },
  "r420": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-14"
  },
  "r421": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "16",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-16"
  },
  "r422": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18"
  },
  "r423": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18"
  },
  "r424": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-18"
  },
  "r425": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.3-04)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480008/505-10-S99-1"
  },
  "r426": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479837/606-10-45-1"
  },
  "r427": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479837/606-10-45-2"
  },
  "r428": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479837/606-10-45-3"
  },
  "r429": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-10"
  },
  "r430": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12"
  },
  "r431": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12"
  },
  "r432": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12"
  },
  "r433": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12"
  },
  "r434": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-12"
  },
  "r435": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-13"
  },
  "r436": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-15"
  },
  "r437": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-4"
  },
  "r438": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-5"
  },
  "r439": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-8"
  },
  "r440": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-8"
  },
  "r441": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-9"
  },
  "r442": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//715/tableOfContent"
  },
  "r443": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480535/715-20-45-2"
  },
  "r444": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480535/715-20-45-3"
  },
  "r445": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r446": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r447": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(10)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r448": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r449": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r450": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r451": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(5)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r452": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(6)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r453": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(7)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r454": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(8)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r455": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(9)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r456": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r457": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r458": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r459": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r460": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r461": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(5)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r462": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(6)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r463": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(7)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r464": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(8)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r465": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r466": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r467": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r468": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r469": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(iv)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r470": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(iv)(02)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r471": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(iv)(02)(A)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r472": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(iv)(02)(B)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r473": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(iv)(02)(C)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r474": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(iv)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r475": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r476": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r477": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r478": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r479": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r480": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r481": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r482": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r483": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)(5)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r484": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)(6)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r485": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)(7)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r486": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r487": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(j)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r488": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(k)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r489": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(k)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r490": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(k)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r491": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(l)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r492": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(n)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r493": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(o)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r494": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(p)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r495": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(q)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r496": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(r)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r497": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(r)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r498": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-2"
  },
  "r499": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-6"
  },
  "r500": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-6"
  },
  "r501": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-6"
  },
  "r502": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-6"
  },
  "r503": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-6"
  },
  "r504": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(5)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-6"
  },
  "r505": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(6)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-6"
  },
  "r506": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(7)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-6"
  },
  "r507": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-6"
  },
  "r508": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-8"
  },
  "r509": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480126/715-20-S99-2"
  },
  "r510": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "60",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480266/715-60-50-3"
  },
  "r511": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "70",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480794/715-70-50-1"
  },
  "r512": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "35",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480606/715-80-35-1"
  },
  "r513": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-11"
  },
  "r514": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-5"
  },
  "r515": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-9"
  },
  "r516": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//718/tableOfContent"
  },
  "r517": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "35",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480483/718-10-35-2"
  },
  "r518": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r519": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r520": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r521": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r522": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r523": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r524": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r525": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r526": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r527": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r528": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(02)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r529": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r530": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(04)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r531": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r532": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r533": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r534": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r535": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(02)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r536": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r537": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r538": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r539": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r540": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r541": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r542": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r543": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r544": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r545": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r546": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r547": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(v)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r548": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r549": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r550": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r551": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r552": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(l)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r553": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "15",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15"
  },
  "r554": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "15",
   "Subparagraph": "(f)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15"
  },
  "r555": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "15",
   "Subparagraph": "(f)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480336/718-10-65-15"
  },
  "r556": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 14.C.Q3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1"
  },
  "r557": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 14.D.1.Q5)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1"
  },
  "r558": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 14.D.2.Q6)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1"
  },
  "r559": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 14.D.3.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1"
  },
  "r560": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 14.F)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479830/718-10-S99-1"
  },
  "r561": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//740/tableOfContent"
  },
  "r562": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-10B"
  },
  "r563": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-25"
  },
  "r564": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-28"
  },
  "r565": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-4"
  },
  "r566": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482525/740-10-45-6"
  },
  "r567": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-10"
  },
  "r568": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-12"
  },
  "r569": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-14"
  },
  "r570": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-15"
  },
  "r571": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-15A"
  },
  "r572": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15A",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-15A"
  },
  "r573": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "17",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-17"
  },
  "r574": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "19",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-19"
  },
  "r575": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-2"
  },
  "r576": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-2"
  },
  "r577": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-2"
  },
  "r578": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "20",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-20"
  },
  "r579": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-21"
  },
  "r580": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9"
  },
  "r581": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9"
  },
  "r582": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482615/740-10-65-8"
  },
  "r583": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(d)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482615/740-10-65-8"
  },
  "r584": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB TOPIC 6.I.5.Q1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1"
  },
  "r585": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB TOPIC 6.I.7)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1"
  },
  "r586": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 6.I.Fact.1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1"
  },
  "r587": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 6.I.Fact.2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1"
  },
  "r588": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 6.I.Fact.3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1"
  },
  "r589": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 11.C)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-2"
  },
  "r590": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "270",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482526/740-270-50-1"
  },
  "r591": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482603/740-30-50-2"
  },
  "r592": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-2"
  },
  "r593": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-2"
  },
  "r594": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-5"
  },
  "r595": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479907/805-20-50-5"
  },
  "r596": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-25"
  },
  "r597": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481231/810-10-45-25"
  },
  "r598": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(c)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-1A"
  },
  "r599": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(bb)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-3"
  },
  "r600": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481203/810-10-50-3"
  },
  "r601": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4A"
  },
  "r602": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4C",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4C"
  },
  "r603": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4E",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4E"
  },
  "r604": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5C",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-5C"
  },
  "r605": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480627/815-20-45-3"
  },
  "r606": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6"
  },
  "r607": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6"
  },
  "r608": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6"
  },
  "r609": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6"
  },
  "r610": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6"
  },
  "r611": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(i)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480528/815-20-65-6"
  },
  "r612": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480237/815-40-50-5"
  },
  "r613": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480237/815-40-50-6"
  },
  "r614": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1"
  },
  "r615": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1"
  },
  "r616": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1"
  },
  "r617": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2"
  },
  "r618": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2"
  },
  "r619": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482106/820-10-50-2"
  },
  "r620": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-10"
  },
  "r621": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "28",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-28"
  },
  "r622": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//830/tableOfContent"
  },
  "r623": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "17",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-17"
  },
  "r624": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20"
  },
  "r625": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20"
  },
  "r626": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20"
  },
  "r627": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20"
  },
  "r628": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481674/830-30-50-1"
  },
  "r629": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "835",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483013/835-20-50-1"
  },
  "r630": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "835",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482900/835-30-50-1"
  },
  "r631": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-1"
  },
  "r632": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-1"
  },
  "r633": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-4"
  },
  "r634": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-5"
  },
  "r635": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-5"
  },
  "r636": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-5"
  },
  "r637": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-1"
  },
  "r638": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r639": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r640": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r641": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r642": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r643": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r644": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r645": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r646": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r647": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-6"
  },
  "r648": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "848",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)(iii)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483550/848-10-65-2"
  },
  "r649": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "850",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483326/850-10-50-3"
  },
  "r650": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(bb)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3"
  },
  "r651": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(bb)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3"
  },
  "r652": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(bb)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3"
  },
  "r653": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3"
  },
  "r654": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "910",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482546/910-10-50-6"
  },
  "r655": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "912",
   "SubTopic": "330",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482105/912-330-50-1"
  },
  "r656": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "924",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 11.L)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479941/924-10-S99-1"
  },
  "r657": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "926",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483154/926-20-50-5"
  },
  "r658": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "928",
   "SubTopic": "340",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483147/928-340-50-1"
  },
  "r659": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(10)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479853/942-210-S99-1"
  },
  "r660": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1"
  },
  "r661": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(26))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1"
  },
  "r662": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(27))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483589/942-220-S99-1"
  },
  "r663": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-05(b)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479557/942-235-S99-1"
  },
  "r664": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480842/942-360-50-1"
  },
  "r665": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(12))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r666": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(15)(b)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r667": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r668": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(21))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r669": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r670": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r671": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r672": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(25))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r673": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(8)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r674": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(8)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r675": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r676": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(11))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1"
  },
  "r677": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(18))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1"
  },
  "r678": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1"
  },
  "r679": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1"
  },
  "r680": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1"
  },
  "r681": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483586/944-220-S99-1"
  },
  "r682": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column A))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r683": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r684": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column C))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r685": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column D))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r686": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column E))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r687": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column F))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r688": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column G))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r689": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column H))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r690": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column I))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r691": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column J))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r692": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-16(Column K))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480149/944-235-S99-1"
  },
  "r693": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-7A"
  },
  "r694": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2"
  },
  "r695": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(f)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2"
  },
  "r696": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2"
  },
  "r697": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2"
  },
  "r698": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2"
  },
  "r699": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480016/944-40-65-2"
  },
  "r700": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "825",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479383/944-825-50-1B"
  },
  "r701": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480424/946-10-50-1"
  },
  "r702": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480424/946-10-50-2"
  },
  "r703": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-03(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3"
  },
  "r704": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-03(h)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3"
  },
  "r705": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-03(i)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3"
  },
  "r706": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-03(i)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479886/946-10-S99-3"
  },
  "r707": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480990/946-20-50-11"
  },
  "r708": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480990/946-20-50-13"
  },
  "r709": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "205",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480767/946-205-45-4"
  },
  "r710": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480555/946-210-45-4"
  },
  "r711": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-1"
  },
  "r712": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-1"
  },
  "r713": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-1"
  },
  "r714": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-1"
  },
  "r715": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-12"
  },
  "r716": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-2"
  },
  "r717": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6"
  },
  "r718": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6"
  },
  "r719": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6"
  },
  "r720": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6"
  },
  "r721": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6"
  },
  "r722": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r723": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(12)(b)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r724": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(12)(b)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r725": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(12)(b)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r726": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(13)(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r727": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(13)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r728": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(14))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r729": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(15))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r730": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(16)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r731": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r732": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r733": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(2)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r734": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(2)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r735": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(3)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r736": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(3)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r737": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(3)(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r738": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r739": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r740": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r741": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(e))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r742": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(7)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r743": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r744": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r745": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r746": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r747": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(e))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r748": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.6-05(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-2"
  },
  "r749": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.6-05(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-2"
  },
  "r750": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "3",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-3"
  },
  "r751": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "6",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-6"
  },
  "r752": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-7"
  },
  "r753": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r754": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(2)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r755": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(2)(g)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r756": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r757": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r758": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r759": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r760": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r761": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r762": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r763": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r764": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r765": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r766": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r767": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r768": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r769": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r770": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(1)(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3"
  },
  "r771": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(4)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3"
  },
  "r772": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3"
  },
  "r773": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3"
  },
  "r774": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481062/946-235-50-2"
  },
  "r775": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481062/946-235-50-2"
  },
  "r776": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481062/946-235-50-2"
  },
  "r777": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1"
  },
  "r778": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-12(Column C)(Footnote 5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1"
  },
  "r779": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2"
  },
  "r780": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-12A(Column C)(Footnote 4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2"
  },
  "r781": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3"
  },
  "r782": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3"
  },
  "r783": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-12B(Column C)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3"
  },
  "r784": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5",
   "Subparagraph": "(SX 210.12-13(Column A)(Footnote 3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5"
  },
  "r785": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5",
   "Subparagraph": "(SX 210.12-13(Column G)(Footnote 8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5"
  },
  "r786": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5",
   "Subparagraph": "(SX 210.12-13(Column G))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5"
  },
  "r787": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5A",
   "Subparagraph": "(SX 210.12-13A(Column E))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5A"
  },
  "r788": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5B",
   "Subparagraph": "(SX 210.12-13B(Column A))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5B"
  },
  "r789": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5B",
   "Subparagraph": "(SX 210.12-13B(Column B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5B"
  },
  "r790": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5B",
   "Subparagraph": "(SX 210.12-13B(Column E)(Footnote 4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5B"
  },
  "r791": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5B",
   "Subparagraph": "(SX 210.12-13B(Column E))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5B"
  },
  "r792": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5C",
   "Subparagraph": "(SX 210.12-13C(Column H)(Footnote 7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5C"
  },
  "r793": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5C",
   "Subparagraph": "(SX 210.12-13C(Column H))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5C"
  },
  "r794": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "6",
   "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6"
  },
  "r795": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "6",
   "Subparagraph": "(SX 210.12-14(Column F)(Footnote 7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6"
  },
  "r796": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "505",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481004/946-505-50-6"
  },
  "r797": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "948",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-29(Footnote 4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479851/948-310-S99-1"
  },
  "r798": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "954",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481027/954-310-50-2"
  },
  "r799": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "954",
   "SubTopic": "440",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480327/954-440-50-1"
  },
  "r800": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "970",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-28(Column B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1"
  },
  "r801": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "970",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-28(Column C))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1"
  },
  "r802": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "970",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-28(Column D))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1"
  },
  "r803": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "970",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-28(Column E))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1"
  },
  "r804": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "970",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-28(Column F))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1"
  },
  "r805": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "970",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-28(Column G))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1"
  },
  "r806": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "970",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-28(Column H))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1"
  },
  "r807": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "970",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-28(Column I))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1"
  },
  "r808": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "970",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-28(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479438/970-360-S99-1"
  },
  "r809": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "976",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482856/976-310-50-1"
  },
  "r810": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "978",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482707/978-310-50-1"
  },
  "r811": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(e)",
   "SubTopic": "10",
   "Topic": "235",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483426/235-10-50-4"
  },
  "r812": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4D",
   "Subparagraph": "(a)(1)",
   "SubTopic": "10",
   "Topic": "815",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4D"
  },
  "r813": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "13H",
   "Subparagraph": "(b)",
   "SubTopic": "40",
   "Topic": "944",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-13H"
  },
  "r814": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1"
  },
  "r815": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483467/210-10-45-1"
  },
  "r816": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r817": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r818": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(a)(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r819": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r820": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "16",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483444/210-20-55-16"
  },
  "r821": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "21",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483444/210-20-55-21"
  },
  "r822": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "22",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483444/210-20-55-22"
  },
  "r823": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "15",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482739/220-10-55-15"
  },
  "r824": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483426/235-10-50-4"
  },
  "r825": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483426/235-10-50-4"
  },
  "r826": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483426/235-10-50-4"
  },
  "r827": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "52",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482635/260-10-55-52"
  },
  "r828": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30"
  },
  "r829": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "31",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-31"
  },
  "r830": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481933/310-10-55-12A"
  },
  "r831": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482548/350-20-55-24"
  },
  "r832": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "410",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481899/410-30-55-11"
  },
  "r833": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "410",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "16",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481899/410-30-55-16"
  },
  "r834": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r835": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "69B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481568/470-20-55-69B"
  },
  "r836": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "69C",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481568/470-20-55-69C"
  },
  "r837": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "69E",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481568/470-20-55-69E"
  },
  "r838": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "69F",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481568/470-20-55-69F"
  },
  "r839": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481112/505-10-50-13"
  },
  "r840": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91"
  },
  "r841": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91"
  },
  "r842": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479777/606-10-55-91"
  },
  "r843": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r844": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(iv)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r845": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "17",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480482/715-20-55-17"
  },
  "r846": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "18",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480482/715-20-55-18"
  },
  "r847": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-11"
  },
  "r848": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-11"
  },
  "r849": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-11"
  },
  "r850": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-6"
  },
  "r851": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-6"
  },
  "r852": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480576/715-80-50-6"
  },
  "r853": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480547/715-80-55-8"
  },
  "r854": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r855": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "217",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482663/740-10-55-217"
  },
  "r856": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "53",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479589/842-20-55-53"
  },
  "r857": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "852",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481372/852-10-55-10"
  },
  "r858": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "29F",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-29F"
  },
  "r859": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-1"
  },
  "r860": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6"
  },
  "r861": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480493/946-210-55-1"
  },
  "r862": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480833/946-310-45-1"
  },
  "r863": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-1"
  },
  "r864": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-2"
  },
  "r865": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 1)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-3"
  },
  "r866": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5C",
   "Subparagraph": "(SX 210.12-13C(Column A)(Footnote 1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5C"
  },
  "r867": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5C",
   "Subparagraph": "(SX 210.12-13C(Column B)(Footnote 1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-5C"
  },
  "r868": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "6",
   "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480032/946-320-S99-6"
  },
  "r869": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "830",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480167/946-830-55-10"
  },
  "r870": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "830",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480167/946-830-55-12"
  },
  "r871": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b"
  },
  "r872": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r873": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "d1-1"
  },
  "r874": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 10-K",
   "Number": "249",
   "Section": "310"
  },
  "r875": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Number": "249",
   "Section": "220",
   "Subsection": "f"
  },
  "r876": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Number": "249",
   "Section": "240",
   "Subsection": "f"
  },
  "r877": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Section": "13",
   "Subsection": "a-1"
  },
  "r878": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w"
  },
  "r879": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "a"
  },
  "r880": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "a",
   "Paragraph": "1"
  },
  "r881": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-T",
   "Number": "232",
   "Section": "405"
  },
  "r882": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Securities Act",
   "Number": "230",
   "Section": "405"
  },
  "r883": {
   "role": "http://www.xbrl.org/2003/role/recommendedDisclosureRef",
   "Topic": "410",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481931/410-30-50-10"
  },
  "r884": {
   "role": "http://www.xbrl.org/2003/role/recommendedDisclosureRef",
   "Topic": "410",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481931/410-30-50-10"
  },
  "r885": {
   "role": "http://www.xbrl.org/2003/role/recommendedDisclosureRef",
   "Topic": "410",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Subparagraph": "(d)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481931/410-30-50-10"
  },
  "r886": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "12",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-12"
  },
  "r887": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "15",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-15"
  },
  "r888": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "SubTopic": "20",
   "Topic": "842",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479041/842-20-45-4"
  },
  "r889": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(b)(1)",
   "SubTopic": "10",
   "Topic": "606",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-13"
  },
  "r890": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "SubTopic": "10",
   "Topic": "275",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482861/275-10-50-18"
  },
  "r891": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "SubTopic": "825",
   "Topic": "944",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479383/944-825-50-1B"
  },
  "r892": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)",
   "SubTopic": "10",
   "Topic": "805",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-2"
  },
  "r893": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(3)",
   "SubTopic": "10",
   "Topic": "805",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479328/805-10-50-2"
  },
  "r894": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "SubTopic": "20",
   "Topic": "842",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r895": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4CC",
   "SubTopic": "10",
   "Topic": "815",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-4CC"
  },
  "r896": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4H",
   "SubTopic": "40",
   "Topic": "944",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480081/944-40-50-4H"
  },
  "r897": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "740",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9"
  },
  "r898": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "01",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(ii)",
   "Publisher": "SEC"
  },
  "r899": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "01",
   "Paragraph": "(a)",
   "Subparagraph": "(4)(iii)",
   "Publisher": "SEC"
  },
  "r900": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "205",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483504/205-10-50-1"
  },
  "r901": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r902": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480566/210-10-S99-1"
  },
  "r903": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-4"
  },
  "r904": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-5"
  },
  "r905": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482765/220-10-50-6"
  },
  "r906": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-13"
  },
  "r907": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-14"
  },
  "r908": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482740/230-10-45-28"
  },
  "r909": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(f))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r910": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r911": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(h)(1)(Note 1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-1"
  },
  "r912": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r913": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column C(1)))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r914": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column C(2)))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r915": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column D))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r916": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SX 210.12-09(Column E))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480678/235-10-S99-4"
  },
  "r917": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "23",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-23"
  },
  "r918": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-24"
  },
  "r919": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483421/250-10-45-5"
  },
  "r920": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482662/260-10-50-1"
  },
  "r921": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-18"
  },
  "r922": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482810/280-10-50-30"
  },
  "r923": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481990/310-10-45-13"
  },
  "r924": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481962/310-10-50-2"
  },
  "r925": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "310",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481569/310-20-50-1"
  },
  "r926": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "310",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481569/310-20-50-2"
  },
  "r927": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "310",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481569/310-20-50-4"
  },
  "r928": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "323",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481687/323-10-50-3"
  },
  "r929": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r930": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r931": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482573/350-20-50-1"
  },
  "r932": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "410",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481931/410-30-50-10"
  },
  "r933": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "450",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//450/tableOfContent"
  },
  "r934": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-4"
  },
  "r935": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483076/450-20-50-9"
  },
  "r936": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.Y.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1"
  },
  "r937": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.Y.Q4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480102/450-20-S99-1"
  },
  "r938": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(ii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A"
  },
  "r939": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480097/470-10-S99-1A"
  },
  "r940": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481139/470-20-50-1B"
  },
  "r941": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-10"
  },
  "r942": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479806/606-10-50-5"
  },
  "r943": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(j)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480506/715-20-50-1"
  },
  "r944": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480429/718-10-50-2"
  },
  "r945": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-12"
  },
  "r946": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-15"
  },
  "r947": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-15A"
  },
  "r948": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-2"
  },
  "r949": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-6"
  },
  "r950": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482685/740-10-50-9"
  },
  "r951": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479360/740-10-S99-1"
  },
  "r952": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-1A"
  },
  "r953": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480434/815-10-50-1B"
  },
  "r954": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480175/815-40-65-1"
  },
  "r955": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "28",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147482907/825-10-50-28"
  },
  "r956": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "830",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481956/830-20-45-1"
  },
  "r957": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "830",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481926/830-20-50-1"
  },
  "r958": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481694/830-30-45-20"
  },
  "r959": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481674/830-30-50-1"
  },
  "r960": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147478964/842-20-50-4"
  },
  "r961": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "850",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483326/850-10-50-2"
  },
  "r962": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "852",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481404/852-10-50-7"
  },
  "r963": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "852",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481404/852-10-50-7"
  },
  "r964": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3"
  },
  "r965": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3"
  },
  "r966": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-3"
  },
  "r967": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4"
  },
  "r968": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4"
  },
  "r969": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147481326/860-20-50-4"
  },
  "r970": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(10))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r971": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(16)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r972": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(16)(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r973": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479440/944-210-S99-1"
  },
  "r974": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479432/944-30-50-2B"
  },
  "r975": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "13H",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480046/944-40-55-13H"
  },
  "r976": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "205",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480767/946-205-45-4"
  },
  "r977": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147480524/946-210-50-6"
  },
  "r978": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(12)(b)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147479617/946-210-S99-1"
  },
  "r979": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "3",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483581/946-220-45-3"
  },
  "r980": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-1"
  },
  "r981": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(4)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3"
  },
  "r982": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org//1943274/2147483575/946-220-S99-3"
  }
 }
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>ZIP
<SEQUENCE>116
<FILENAME>0001437749-24-006640-xbrl.zip
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 0001437749-24-006640-xbrl.zip
M4$L#!!0    ( %*$95BODQD^7>$  %#]   '    83 Q+FIP9^RZ=U23W1<N
M& 2D":$C((0.4I6JM%@I(E*4+D2E@Q!!D" A$9 .1O #%#Y .DJ3CK0(H=@0
MZ9T4JM1$,;R2$";^[IVY_\R:=>_,NFOFKC4GV>&L\+Z<\YR]S[.?_1Z.IH\(
M(/YK9I9F(!86%M =Y@MT1 3Y7$7X^X! UM8@51 (Q DZSB((8F7V6)@O$"L+
MB/T_?1#(D97U/S__&LB._[_T_W[8"8#8_LOWVA_L!/];_^]U():$UR!0/>9H
M#G09=(R%Y>_[OS96=M:_[3@;&RL[QW$.CK_&R<7#Q<G)S<G!P<W+S<US@MDX
MN/C O"?X_O;__I&_M_^]B_D^P<G!>>)_N!U]  EP'H,?VV%ED0,=$V!A%6 Y
MZ@-!F#-E9_E/ _W7QG*,E8W].'-*W#S,"YKYF=-G93W&G"P[&Q,B2S3S]R V
M 79!V;,7CPO9W>60"Q'6CLDHXI2_5-\C8C]"5M"Y%QK+Q2TJ=E)<0E%)6>6T
MJJZ>OL&Y\X:7KUPU,[>PO';SEH.CD[.+JZ>7MX^OGW_ P[#P1Q&(R,=Q3^,3
M$I.24S)?_).5G?/R56YQ26E9>47EF[<-C4W-+:UM[]M[<7W] X,?/WT>'1N?
MF)R:GIDEDI:65U;7UG]L4'[^VOM-W0?^'/S%Q<)TX?_>_D]Q"3!Q'6/Z@(WC
M+RZ68Q%_+Q!@8Y<]>USPHAW'W1 A.>T83N%+&47U/5SR.O9DD7NA(]RB"KI$
M1<I?:/]!]M\'+/;_%K+_ ]A_PS4+.L$,S&,"K (@*.B07IRB OJ_-IT+["*_
M;/KA@#I\JX,,7?)$&E%\![42VR&IQ#;]',<(B><_]W[$B?C5^MK>;0F727#)
MY]X_UI6Z!-L6)T!G<,3PP?3.J"4P'V#>^^AMV6]W>X91E/UM;Q&I9U)XP"[T
M*\+6&O3H'Z=XQB<H^:;6D\)6GS>5_D<@+M1IA-- ;GF.T&UW_\D<7I$]VRI5
M\>YAU=)RF6\I7MRV8G;_/N?#]MK,31%V!S'/&,K 7<)NDL<I"K@/S)Y75.NG
M_R*[<\QTZ$'+E/0]@N>7_%']GG,^QYZ8/$HA=PDQN#W)8GT%^D BL0.<@A)J
MGT()30=(%*:IE[Q7@H'G_']&1C1\TR>_PW[N\SW^'IT (;OLSC@M:6'"L#P
M?&D*%VWE,;EF96WZ=:.*=?'&EHALVJ<FW6=]JJ^-7B6!!"^\!E>HU&D?%AV!
M[@_'HQN\=Q."&(J(7S@4=]Z 4X7-B)!#![^4V0-;[?*HTYDF7Q]4=86:7;U*
MLV/,0;F.0/?2P9;C##7$[D6R9F'M;9.:IP>E [KM66(/50G2EWY=D"Z[BH!M
MS1R!V/4."YE#0$X.$?$):+%.GB4(_V6AVU+:N)N7$92ZQ;#X=SM5 ZNVEY9]
MQ47><-"%60G51R >^L,E'^ 541+-A=2;6/UN;%-U&Z_159M>>>4C)E#M4U-D
MQW+ZL;1L?Q$G=2:2.\6=$*K9$2@V'WGLL%.OR\H*L*)8]3)T)_9>\DY,Y@7J
MX*)/<6^DGVM]9>_XU*CXE<@U5KECH5_^Q<]&,+@G: :H :R 4"]4D'$&,.AE
MJ-Q)L%9U2VCK:.)[N^[[3.31$VWMAE>7$AS9O!Y>@%RU\[B[5#AG0X3B,#-#
M**T /'^G&KAWWR+?V([]P-T_L[J1T_.TKEM6W+4>[?=_VK8"T,F%S?LX2!P>
M3%<D#0LBEG#ML 1D)-J['!%Q*^HUM7UB:#E(H_J!Q2O!R/HJPXP>NW])3TSD
M4M168:EXL@MZQI=@,'#>F(6$?^8!&NET"0J]O[-5BOTE9O/O6;.4U5N\(AU5
MQ\2]P]3HSJ_!Y95U:@"-%DQ7/,PQ%5XO,*0<@?K O C?GFZ% LD@-9?W[;S>
ME9:Z6L:73@N%MB%*(APYV)UD]FKA5&94QQ8@08?U#%DFNO@CD$BG\A)<P,WY
MTYLO=\MOZ[XPOX^1,"X58?7S]Y1")]ER=-IYH&E7&!-H7JP7FLME$R_4&4*L
M8UEO3R>,;</#JY:;$J)B,3+)+A_96\RV,5=U=V>6J&7 0YH;0GNW#W8"Z4\<
MEEK7-Z@IGX>MM[Z)@/-^'CR5SJ.=R?HT6U]^9&KRB=&&VC<4!V,*RHOVUQ(!
MQBZ2#=*:8(*!A7S-0J6(0INF?PZK+G> U5$.??=9Y>&QWN(GE91!] KI"!($
M4'/:6B#:L&XL*H^;G@$,\;C'D*3AI_#PFP^&O$6KY;-O^BARVY4*X.2)EI(7
MSN,T+YBF%'>' 0+,J(4?YAZ!_/$I[; 8!H3N18:ET-UK(@<&K[UKUPH)7[GT
MR[))1'Q..'AMAC<"+X3]NX78&?H(*^)@"CV2V,4ZZ&$DXR>AL3+];/>6XM?
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
MN'S^+'%^YLH+LW+];)-Z]C^D]TR-V(GD)8.WI6BGD=X4?-\P%^ Y !$W=J-
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
M;%)(0/ NR_/X%'6/42+HPH&#N8[-)(SD-,*W%THNIX,I^L-$5 7ORL)G(//
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
MW(Y%!>J:+0AMZLZQ0&&#JNMVV1J?"VO]:0[F_DW;JK6'#HESI7"6EMR;%^H
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
ME["T#F=:,[\,B&)/.U]^C*[!E.6RYVVU8HDM3_M=T,5\K1[OY^>-:7TAIAB
M_T\:HUXX"TY>H=X"T.2>GA PC^WTC!&'$K:3D/N3>0%_.9K15+FJ;:02:R>_
M\;P!<RAUB'HN5'@HVMW0$'4"-K)/]WX4VV%%K:E+*E#:]L*WJ<1>RFZ4>O-_
MIWBGFN4-CEEX/TH>U8WC!%I73+Z[OVU%:YC@RE@@XUII%NBLP/P P_^4;N%@
M/A9RM?N9;3QG5.=0_ .]I-@D&@:FV]\@"#D;\;WPT673,XZ/">BP;6(""^2"
MB=$[30ZE1G_S%(&V;1V%&2\Y(IS;J%W/DCJ.7U"Y0+@YQU>Y 'IY,^D84CN(
MG-B!_X%O"QDXBQK(^%9.WK-,:3NH;H4)=%T<BRL$H9=>#0GHO/P</"5N$SC5
M<#J:*KPM+]6A=W@0=<%#T;G$(_!Z\9=%8[^3/T__[4[NKJYI%MB?U6YML! 9
MU4(+77; <U]/*SBV=$)STP-[41/\1WP_55ZAOVBG5S5 <+3 +L5]?T;))+C
MV*EH7YLJQ9Z/'@0G]>-8,1V\(!^,$Z3?X:G:=K?K^;"YE2L+LNMO-KCJXLL?
M)GWQ1_8-+DQI#PB^F$C09IX0GX/%BSB43G9Z%T9M;U0^P(T?#=X4PZ]_&0@\
MU=$PT"(A!32R0$<)25,6X^J+%,U6(+:5!T-2M%7*&-1;*\[=9X%NO>:P.EIK
M$L4O&1S<)ZRGUK==O8'(X;S4CNY9,QG-6U>R'A!8GDM;=HF<;_B',<TC(YPR
M:#H"?V%Z!IF$\E^>6CV*"K=T,F8GVE3$_$"L?T?&NE-BZ[ A.%U-I(Z1\N5(
MB</R5;8)\'/@C<'/E4/*,)%*TE%[U)> 7?G-=B>MR@FW)X\^A4LIZ MW\+Y@
M2)WO?5:[!($G6SV(V:7Z9,TV5%?GE%_;.54M$(8I[QA.T60LCL^$,HV'K6Q^
MLG^W.80%<IX*MA5=& ^/4]Y#_6K=X3OM:08%E*$;Z&"946!_+F"+UIFELE_Q
MT&80_7 YA.&4QSRDO*VS!>?Y?; 6NU_=2B0_P$S:M,V%IE%C &U!"\@0_9Z'
M&PN4XPC' VB:+U(0J SEKH[44Z8K4M3;6[UB%67; X7*3$,%G%->0TR7BM,>
MK\I>KLCEKVZPJYZ-?9/]]_;N]9L3ZLL2>HQ2G 1=ST30"T6\5_<&_-=+(;2T
M2]QH:9^?!6IHJ;D&<8?&8D1YD^<@1ZK"\LQ:UD6V>K:S$F)OP&B+MW4+=Z9;
MVQ22N:WGW4<#UM$#=7*CF+Z;:WKEODYNPX^TH*K%T*F1Z+(\^J[(*Y3%_><L
M4/4]E#$.\;']ND_$WV!U[KO, ?.RZ*V! -5V$9KW8PYHW@LR\0R3,"ZA-B;]
MBRD(>.^U'V33BT,4S 7BJUY<=?.0RN_Y,#Z8:!H4#7G,"YBI?]A-?)TE.ZKC
M4: L__2B^].Y 6N'TU-^ UU+B=;JFTQ1<M;'N3X)7<BMX8V_4\*H1<%?1981
MT_,W%O=TS9_9Q_IEBO_@!P.>-G!*K@4+M'?&K"L31HY.\\3&%NQ$LI/]Q  +
M).V4]\H=7#I623%^$&T'5)+,,E_X:Y,&-[ZJV$Z%N 12Y_8?61@K[6Y)B))Q
M'^<V!<4AIJ65PT^].J3""1?$/-:;_H1D?6L 4S/9F?0=R<5(8D["28GBJVEV
M2UE+H4+&$()=^$_(TL>OM@\>L$##@6]"QOMEJ2S0OV;+&SN-! $Z>N* !6TI
MN@.GV9+Z&K=!;FOMT5H$*RIS#E<[W4M=M!5;_.$;(-]#2JV4-V>!4-Y;BX38
MW^\HM2Q0#-@VH]6ZH'^!/)0KFG]P4V\CU,5M!H-BVT\2)!K'C[!;<* 8U>8
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
M?>1>E"A*O_$+=0YX'NK<EC&6/,^0''&%;YIN:YNYXV>3;OY[G?<F,,6>1!+
M2QZV$8%$^51NQ>I)9A@<%900&B8\275 ?C:7^;EX-Z3%1:\#%R+TX=&/;N!U
M_D$C+'N&GJ 3"(]H+B1]-Y+ VORN1DMMFA9^7]>H$\Q47]IL;\S,+#LGDQ5\
MU/>?G,*K&J C(^,KL%CT4\B4-C5NF+[%1=<ANVTLS8<4%;T@)FR]A[49.QA?
MYSC7_^SI!W_11F2U/>.-SEF*E'W$'6"?LD,*ZO2R=3UKG/T[AOK"X8Q$?I3K
M9:M/.]X7]$:WKW6"EVJ.T28O!09(%Q 'S8AIW:=4]UWWRZN,7Q;:HJ_&O1+*
M7,3ZT/P/MJ@OV9$ZS>S'@VY7;2X84KX5G#OT%"G'2TU_F]7R[/[4M06.AZ&%
M7?AY/!X.(TSLPXZQ0&ZC9*7H9X'8F(8 >2,[#;#"8!OSUE]:W'.\TPRZB?>5
M"EWR%@LT;\KL8XJ3'=Z%%Q2O^Z8'<!AM4>/"DW]0S]S2+1Q#SV?AKB!-]AML
M*9HTB9E:C0PQP^=YW]-@\KM$8+R/G6NV48^^.=ZL?$*E^C/>@QGMV&["SANH
M,\.PSZ4D*/UNJ]*/K_LK>^U60?L&B\AFT@!PD9B 4KE1C:ETVS0KA#V8X1Y&
M^.G7)IH/VT;/R"]?;F-T"L;./)O4"22>T)- _<27&2Y]!\[.;^)?(_6Y>&4.
MS'5WM><O,2\M-UQ[@SEX"%H)@]T C*F'@)#YR;YV1DDN2;Y#.\/+E)*PO)62
M^!!"/D^,?]$9J<.9C1 9:<W^?>"4+'I*=9+P]0*N_L; @J,P,OEUZ1EJK-J5
M:MK=E;91V+40+=G5WH1/RKS/O&$0SX+1=FN8I_G-K3&G(720\D\V"P#NO&_
M?  9VRHP^-!;;[2DVR9B,%PEYC^\+!1PP\<1^?8IL#86:.-CX#K\2YL-V^9C
M4PZVV$[VA8H3]B"\U&Y%> U(H*Q0[Z"I2P+<NO:Z^-W"B=6T^0++C?U@MLP/
ML_*CG]$Q:X7\$'KI_[*O0*:<)/]:U<[\)J-3MJ#-'N+P;AUV#O4+1M9GLQ*1
MFRGG2#?]]RE9'MC78!ZDH\RM7TC'(@=XG?C/@:Y#23#U-J[4A]5\CO3.^$:\
M13ZV;-XA3VF^.^&;>52>>2/X#VD_S>.:#+%OFE*NL'ZE5Z"T<D5]LFORA6):
M%SB)BB$[0 C&S!-3?A(?:>ZH_NMM*-&P2#Q= 0;Z/K-:MKCQ.O=-_0V)^\=B
MKC;-A4ZA6O\D3NPQ3Z:0.:D[X?R (T6[%75AU,4XF29H8M?YX,9+(9GN9\DI
M#MMKD;K""7"BMV).?772.6<3R133Z]>C;.XU'PWB',*),[#HN1GHI#VUH3;Y
M[L<F&+F$;B)5A)G2XTCQ]X@X4E/Z4LKNJLHUI5]"LD!DZ,"XJH,/K4\V&K-S
M;^_+3IYL  OD/;"(F*Z4(M<?L$#I>XH"^S?QY-N8J1VJX"/9)A@AHY/4&;F)
M1NBH4%1G9GT4M1((<HLTXT//5)/ML.+'H$)T06?J+T;&T4"T&/X1FA]^&Z_;
M7T[^LVU&TWI\Y&)#_OU=3C"QUL%?*Y=9V%U5BY+,=)E*OPD#N"UL]AQT*W%J
MXPO[X.]_;99*7K-%A ^JSQ?._0V!;<&+Z)PHN &JB7Y WJS=MJ]ILU&6)=V1
MN'YRLQ@RMP:>Z%X:@20V&'H+/TDC?_M\DR9>"AXJPW"NO"-R0=[;TZU;U_F)
M!./?N0+[Q21>0)N+JCLX&%\=T^!5Z'4T##[_>CQHN$_N8"'W^1B,'"C; HF!
M7\2W8L/Q%<:) 3>G'D7UM([AK#J'_6WNUK! ^">CQA%^M?*,^QY!\)30/\V[
ML>A>5($E+(5--,<^,2J8U_=3(5PLT$/P.?>@-VWZH0NA=^VY H7G*H).V^;3
M9:5F,W1XV;NZ,/(EP\T-VHF'T&X?-5NFISRJNO*=O*0XO1?QCD23X8E1]/>
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
M@UVR>[^66*]!3B[8-MH*IEP773^_J7]PEZEQX]^[:";@T +[J8>HXNR 7'=
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
M@_A1K9KOMX-&+^4*U-[Z(66S</]W*<^NO^0,7_;(*E;4 A7,:RQM0'Y11([
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
MAEJ7-J(&,SX>I/FS:OY^5]?OQ888$3V$YF%,RUA@^?-:+0V8;T&]LA?/.^,
M K$!W&T<P/A"V^BN$U<EN!D;R>F]1M.>?A,V,CE"G\B[E]/G7>)_)\DSQ= :
M:G+FLF^;Q VGV4_)_M9E-W(82G058H;1G4G9\@2.''VK-UV)8L'RWZP9<Y#U
MR2K5P IO!FJ_<+3 ^,@(!"[8/FMYCV#6 <?1*1BMZ5$[H/\U$I(>+;EZWR>8
M?]4 E1(]^]I_2V*UN<WG>7#D30U)JLC:?-_Q@O".D^>S!26]-BG9F3%0TFNH
MF(G*&D>.5IM*,QE !E)L]Q']'LM[=AO4II)7/)I'1NV97OIY#]3#0\Z91?KL
MZM8)%Z,2SI\;XUF#R>R O"!B+#N 3%?KSH>E':$]0"R2;5EJ;.BU45F+<8S<
M!@;V7E<@Y0FHA_%V7J^M&6BKXVN% :HMZ] :3G_A2?J1Q@@R+!ZU-W3^ZME1
M'1T:FI#L&R7*6!W^[N+F[Z';U.K:.H$H5FNPDC+T$K\QQ]GX2(=QTW"G<[0*
M\BP@1^ZX:@:$P,D:OGWW46!6( D3VW.2:%.S8H!/P:0*KFMA^W4RNN >'4Y;
MYX.NJ?3K_41T%2Y3?%F2@^Z <V5+;!@X038 Z8RANRTGU&&JW"+M\4.!B\TC
M.FSG.O'MT0OY]$6][6:T G']JR+<R_Z<G\J=O1O3>1S!ZY2-&%C#I6B>,5V\
MD%L BI;'.DD77G"523L"%IY&G%_XKC%PX-X(-'%CK_F!GF[7%'%R%"]'R)(I
M _Q@O!C7L;$F_T# ;"8Q;/"U(=*DII'EZV^RA0E;Z?YK!DW%-L&OIA.:'0JL
M.UHV@V0434(C!2+1#2@JD[(QT[\H4AOO32O#JA:M</:/8"TIKIEB:])ZLI^S
M](K8)0<=[JP,>#(I.? 1OFSGFLX4IU(+Y'HU;!_+%'A!"^<(\=.(-N/8R)H
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
M'M9[LK+PM'KZ4IBA$+"ZOOMX^X)&%NYM=."+LO#=6XG^3=L7WY]02P,$%
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
M?;A<2L,6]/[5EB_4HDKO8^%=<"^6_0]02P,$%     @ 4H1E6#W[M:1/"
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
M/L[KQ]?A(?GI[T]SQWB@W&>>^WEO].9@SZ"NY=G,G7[>^WYKGMR>75WM&7Y
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
M*U][.["6N0QR4JRF]<Q7E!=%/ 8)[29^"E*\! G#1C$4Y0Y%6-GY[59%7_:
MOV"/&74995O85:*O5ZB'PJ9'1NJD*\_5,W&24/OH =UEK<T:,_?UV,$7[Y%R
M7"N#-$% !2_Y8: V1R\& +F4NJ4NPR[B@7(RI3=8+I:A-D?[SG2!(4L=(X>J
M6;NA(MILGO& J&9^69'P0B7BS\;\FO! _A"A<Y&74[QBB:<\7)_9\BBC=)+&
M<G:JH7<SU,K&!Y)%Q_D8+H[C0P.WY &WO%<W5=2S]]+U@T=>[[QH-LWD;B>6
MD(< [^);9V-A%7._U!9#K9Q^&>M^5K;*'%LDSXDLTBQ7)N>+;PE]"[&5P"I.
M;$2(J%18Z^+*YH&* SN). H9VTO#8'DUI5R;.,G"'5?QZ>;R:=1W7:$#!^8J
MX\D=C9WFXTF:;47H[M7U1S57+E&U=7W6_HCTE?S;XXF-BE*LI/:)<3><@(Y#
M;,N7Q"H<@FC.UA]1<&(2;T5Y?%DX%UB&+J42_1'P&OISP#]QG.4-]1<XW0+&
M<$Y68K&FS!L5JTT@R]BEMXM%W$KR4ZV*M%XL=]*#)GCLEW"^G$0^>?_B:<&B
M"OY)22J+>O[V-IIB#=U%DZ=#Y4MFD9_UFC ,A4MV!*_E07'[GQ36!D$TZ*1K
MAXYU]-9-*.3*1-?(6V'NO,2^15]UN<="0SU]=6:HW831ZTLO*F6#CO3'A?O
MN.=B1N(D6/[B6'D!U;+V5LK0)THQAHIY>]%GRYLNQI,_/?X#FIC<.CJQ_PU#
M#*9<N?%9Q(R?(Y6T9>G>N4)2A5 N>B"HZT2,17CTC]I?0R=@"X=EK*R0L1_Q
M3AE.Q?%&P>X=X5,:H*O.24.52F1K+O&2YQRKVZO' P"$_3OA]Q[_AMYOXG!Z
MZ\'X"@,'!WQBO%:($7Z%UMNF9#_[K)PDMR%4. E=^Q:8J!.Y/&,_)>34(C[T
M,A-.\#0*+LNHB/A-HM"68*YY8:!=OUA/I<<[ H,E<AX/I$5!:W+T8_R1'.+(
M&&39_$:#BR<9Z('^=&$FC#5RH<@4PPJ+0K:KHF<[UI7&3F\0Q2EQ(2 D;W6U
MK+V$=)YU,*!XUK-.O)4\/94+?<08>2?\=]]=)C;1L^,L?H\F$D5QVQ3M1>.^
MR=TW)0&8RE6>V+=PI52:T*&C@_NC$9Z2P@L0H-9SZK.IB\O4?$BM8M[>KNGC
M2S7'$_D R)6K>%=6^=I>8WU]B<9(1;IR'R#%XTMYJQ"TSF^>*W\TZ6.]POT3
M_COP[XL8ZL9N*EE)^&+CJC)T95.5]]4[=$LMF'_:>/N7BQ%U<IO2G6)TV>WX
M\B8_(*AG[\4@("QSBB[-[,'I$\ZQ'\"LI\LTBW0H"$-&QQ+28^:^Z";NH/\8
M+[ *']I)!(_(TW\29%:HXTD&'(GF>L%*AWUF<3F1[J6R$#F]YE3,C<F\@+GZ
M/+V<<U7.J'H[7Y*ONHPGR0W5T,FE]U/'UU-7])HM"_=E2+DC3V=BSI+="2K?
M.%++^D)[1I5XO)O1T?&[4;P>$[WU(RD$-39EZF5+ Z8/C]\W"E:7IY=R_4D=
MQ[^$GMP[)>Z/;R=YB2I3>]&7H$>><C\[T*7'C,KO-ENO2%]G4YG7# JO<QR8
M$\*X>+: FG-*,,Y;C.95CX+*/+9)@FQ1\8P'OLR);QW<$Y]E'EZ(-/G"//0N
M4J^-/H)<]%>G&K9('R,P(V</1#ZIG$PX!2Y@632-WM<0*QR6?U=T"MV&+]Y
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
MH;HH!C"'ZW[,PX9G4US$+H29OE]NN(MI"$MBSS/$P>" L%YL==6N9!C,(G"
MZ'MSV;.C!4TF*"F>$K-)!P#?YB,9^YHG."O#O3WY4MIVUY>[I!N]G3PBIW77
MJVETQ?N]VNBV>M>O=@A>Y%_R!%'Q6,VJTB5A\F47-IZ+?!U-KI+]]N0A'+F!
MP WBY/K[2.,\F6$FOG;"ZM+4][F5V!_EF\P]GL7YE'.^%I^"O?)]4?$B3SG-
MLHS<BV-D$\C.#4/@Q[:>$,ON!/,9*I0GCC,W)MBV!@&Y8K*.BS6-NA2W03?0
MN/&C6Q\0N/29".TAKAW=9H9L_BU:@("P?-]YE>=%?1_?J38$9,T['TW&@5:M
MP'00V9K1(0R/@6TOO,IX"'MI?]C-L@Q2T%]WO*V-&D@A@]W9H!?RMEA?P\#J
M;P]B"_PG&,"]Z#E;S#\/ K,/^Q10F$[I\I-Y/O+5F]I16@DOZ3B)I?B21;*G
MMT#W$*;CC18(83J>P7@)TZEU4?T$5:F8=G.TN57RX"K:[NN&QJFP*!&^$]<>
M+"E4U^KEO'PE !J>^56<C^NJ]()A9;WHDJ[H"_=+]RI!E2WM.Q7ZI5^=0%%7
MM%^:GR['R!3XE#Y."+V/:6H]@<PM](Q06+?68-8+]TLW_^68_XV+5J.BK]T[
MLOJSRC [)G/Q,ZZR'55V&COE1@%Y1+7=Y@*^6P?]\L?:5P_5&;]&E[T^A:5)
MUT@1"2[O<2:.G<_R(LZGPCM2*<_J*R=H#NW!1K_]MR\NJ-H%P(U+BA8QKJ6*
M&V)%71"HW'(5MFP%IBO=8!$WA!?IK 5(SG SLC:;1T@N[PYC9V,@0?)V=YFF
MEA8Z)*]VR[EK<BM <F9W&%'%QA>2Q[K;TO1AOK>([-S?BX!:#X".&;Z.HGI1
M.+8@M:E;X9@(6I=?,SY;^P_B,':#Z[S-@6A8[(T%^CT.1,.CZ^3WFK0Z\,;
M$K+Y2*#%,@^BD^S'U+@K"'-,^HMX'K'.FAX1L1';>@9=YMA9.^6S*M_RH#0,
M-<&.2D/""935:"W'ONY-V*W7E,77TN*4=2X)*R@J,)6\DD\M&UZW#]1K7^]@
MV+RNVXTS_2(E"=YY&?JX))M3N?%&M 9INU: O7O1==R:G[O8_Z* 9%?[X%V7
MR62AHZLOQ/]N8X;X)_\#4$L#!!0    ( %*$95A<F@2\DG   ,31"0 5
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
MC+>B,DX+Y0^K2M+DWX;RA54=T7 Y0UG%IYYH>..@3.+35X"A?RB#^#06$&H
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
MA@5+Q 1G ?V[$%MR1Q$46ZX<Q!6"'$"$QXF_09SX),\7=$GX5YK?S&;BG#:
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
M['QK*Z(>:#9OTX7!6L-(J/8D]$+$L+,ZK$9SJ!$-"QVEH<J-C [99"KQH9Y
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
M0R&5NJI^9WG@F\^2_A (>2RUEDXL/AO!+8?%0Q9',>&;HPM?=8VVM??X52=
M/X ZPTQ4!Y2\MNXY9JZ'CQ;="#R)Z**;&@O$]/P:J$)&/6U>#+%.FYL8:)7A
MV\40B<JT_38XM["UN^9$W@#RP6OM ^B#USU'^W3]J2.+8YL%$48:S#9R>XPL
M3&T8;P%RB>79A^Z>#B##V-YZ,/9[ /G%]OR#+>>=8\#%CP$O5Z7\U4J<OLXE
M.^$CNH):Z%+D<19O$6=Q*+:K@I)]23D-V3R5)_FS+-$KM@^/22+_MGV\YW4M
MC_X^8(%Q20=)-Y]('BXJN;Q]&N(FO8QYEE_(HL3;W][,+L1A91M:Y1?$#T69
M)E''KL5A+3#Y04H4&AT/+U6-9J0%J(,--$T-XX>YNF3\ST4<+K:3^6><).6$
M3O++>)9OM@WKZ+<Y[H!LWJ3T]R*-A-;0 Z^-@UM@^#-+_Q872XFQO-W?/G=$
MOOR<J;>>9E<;Q!9RP)N9^'*XFT/&-]LS<$93\8]<?KGVI.OWMD!R*4*O63K/
M*5]>Q^1!/GD3JVK]PGI8($V8WU^+C&B+')U^-B!R^ZTEA]^FEM31I6SH-%9Y
M1A)9*_]N06E^S<*V^GYMS0>G78F4:>\P5OH'KG@[HYS+\[64&YE45D8E#3;G
M>UR\%&:%:*<H1FHXCFMN7PCA(S5T^]N;AR2>J]X2,AMD:#[E"QJ9?$96_+#]
M?0995;-QAN>V6*Y*K?E+^>A;$LKED6\8OER?#W$62K^#LL:SY?'1SHZPIRI'
M5!QNV\NW2>4=%XJ]+;6%>Z$MB!NPX.G-=B]8F+0NGQUX+B])S$NOW<WL<#S
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
MBV-814XYS?);<>SO'LE*2;VZL5.ZMW*GE##/)9*2 V@WQSE=QP*SI1JSNO'
M="ME45OS,=*.HQSJ*R/P34%$/.C 6LB^1;@PW<.,D4>0&L%,U,#1 A0@=PJ:
M.#!X!S+3:Q]5&,C>T<004;:X:>'F +JM"Q(IKV.Q *L!Y=:U*7$Q;.(>5AAB
M6?EXNX^WZW'LX^T[E@9T<(XQ<N_27^XVS/AC\+"MRBE#5@]Q6D:PLX!D&<W%
M?\*_"[&V44#2*$AB\A GL0R0RK^+>RO:!;4TXX>6O^HH,-@+U3[B]P8C?KM*
MN.>';72[1R9<16+'Q;-87C*3<FM-MCM+ BT/^VI2;:OM&^+'?ZC0"T>_J0MO
M#44#LND[ 'ID-4V'<];Z8=03=1O/%_G-[$NV[>IVMIJ^;F'*IH1_O4C7,6>I
ME/Q" .R>K[].0L73NO!N3GW,NS4H)S>KE*QJGM4.?G"_T^!FT+A%'77- :^6
MUH-0?G3"A7V?Q1&MD)#W7-@#,RHNA\8JG29##,VCL12KE97]?VCD\S5YR$J7
MD;-Y>_G!T<Z?M#?EVQ&BR9HDHJN+O=?\T?'.8Z7?5BVGG*Y('&U]'#M'B+.C
MK4W+:<RZ&(6*_21Z.I_DFD^/?4Z?6VHRO2:;DHT"AC (#:.=Y0^TTEAD:J$K
MN=#XS='.XI6PH])YO&]<RK;[!4D_,A8]Q@=G?H^S"J9AQ+.\%NT9WSB9S1??
M&NVL-3N*''WM%&;.H6*O^.IH9W+*V8KR?".C;OE6XUX=!T9[G,_6;SN=U98+
M85!9[5&IS4%>CTHU06RV>0"9L1MWM(A-D%,4'>X-OCK,-,R "E+4QP;& (#S
MV#"/#3L=;)AKOSI:L=PCXSU-<YOK'=U.'/%4@SS$Z,".XYWP!M\1NAI)XYUA
MP\@2NC).XUT!H%<%73DI-S,^**@,7<FK\>YRS9@*<.9_]3/?-48(G.G?_$P;
M ;#0*8/N[<#6,,Q)&X,J[OO5Z:!8BY,V$%NF'T%6!#H),>;I!R98G+0!.8#$
MZ3K1X[03@1/=2<,=ISUGO@6!>0!N$V9_">;;-2SS/..]+;-+ STJ"RL?@5F6
M16')DO$\_G?)24 KGXIA[FQ_!#A*H^V; 9]1>\H9M=VK5,JM+-2!]6M'Q.1H
MC^T<G[.<<ED _5)T>,&1Q1$1S\!G<9[N'VFRII]8FB^:T$MV!D4\#U8WP8C6
MOR25%8T57#L-AISO>_%E>PO^;#3LG#\R>WP?QL+"]6?:!)*%=?((4H\@W9LP
MF!"D'HKFH6BG!T6SJ5RB\['V,06UURXZ3V=OG+]6M- Y'_OB_;5VC<Z[V!OK
MKPPJ=*"-/EA7.!3002<Z\_]*!W?F_16W>\:2."J]D?M?9])+&9)L$<P2]JCA
MR]4:KG_/K $YWL]ZRG[6Y@>Y9 1[2C;E_KAD_):N"AXN2$9O9N=LN63I7<["
MKR^H,NML@> /=,5I&)<"<Y)&0K20-*1U@+]CT5I'?;>1++ B*\G>I%=I5G#Y
MY2EG(:71R_6'-+5 S&>62L%PPZ>$Y]L?CI*T_B!)4:[I40COQ:N:Q_1V'\U*
MZ;]R7][,_F3\:YS.S\DJSDDRB?Y59+G\RU5:DXY6QTZWD9PZ:PXT9?=,!GG3
M,$Z$"94?RAK?,YE7(O;06DQ^=+81VUS<RWMXQ23,XS4DG[_/3[F=LZ/S?3-[
MJ:(T<0_JY)2/[;8L]<@HS@M.Y5NX$K44G17B&.;_3?,IB5^>6-/NCGG+%O+_
MCW*A;JG8,W&8[_.DGO_BJ*5@(RDBL>$^Q-F*923YR%FQ$CW$S]++$Z?%'E\D
M9%+C_+@G83QS/*4\9N)PAUS>H!]H]=\]V[O'/>0+$%6E]#YFV9@(Y_,LR\9O
M+T:9"965XG"GA3P3C7*#"#-.',<6>6QK6*=SL8.P[Q_M5C[DJMG+=7AJKT!.
M>2RF>T62G6[<')UJ[^.4B_V,TDS*^N; 6G-#U_2^..L[0/0NQZV]TJ#1&$BX
M5)?Y _<;GIL70.K=S!]0OZT5NFP-._!<[%Y4^C/.%^="P1:GK,K3!+/=.L+
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
MX-EF_\_?8Z%Q\G"QN:9KFJC>KM+J/ Q?5^FJR+.2F'?*1T@ /0;GX =M#GY
MQL&/VAS\B(&#3T?Z]^NMKGY$RV2,T^9RV$*4C--X?FQA/Q(>J;<EH(M3'G8>
M/8FVN'LD*R7UZL8^+N/C,GN_%*:X#/"Y*CT5A%F1RQ@G J0/,Q-[9G3A.'T3
MP?&"MKN/0:O##%PRJ"*1?>Q=#+4B;;XL9V!BH=O-9J*V;A;:;#.4V]O1'85A
MYP^U&6K-7'3Q[%Y8K[6/T:TZ]$+3-[G0K;(NJQ#[S"V3'A+E(5&G!XG2B9FA
M$RI0%E7!M9&"H(#AVI$"H "A(,?@GG="O.UH"N*]058!3A8TFI?I/Z'X<X4[
MR8KEDO!-P&:"(]$^$/-JGD#5U^==P79Z)=]C=-X@1F?43\=YI(5'6KC@(?O,
M\@\T$R9C^0QP]GLE:8\:?!13?RUDZ^?&Q\.LC>OCF9H\;&=U-]'JYR75C0>F
M6RD5VIJ/D?9!I=E5*A0R>E"TV]\F!?3 P(%R*4!]QLW%P+OJ69%7$+BBMJW'
MA #H_LR$1;.[8)5$*UJZ1860I.&I;44+C[/Q.)N]\V=\.)L6I8OI*CD8>83H
M!LSH&L;(K0<, ;;N", 5K>>-:=R@J*)R]F0/!FB$![:AP &\460;'F2 MB6.
M;@_#+GX&, =0[EF;:A &P6MS13&_R/X6D$E]G$Z "\<M<L+#KSS\ZA3A5U:C
M:XY!,3\%V8)P^D#$3 ;A$8*L\?>T$B>F,!AK'W0%?+%,L(>ZG#+4I7O-EZ3\
M$(WNY.8ZDYOK&->I?M59K[-3ON0;:#>S]@A#8SL,<3\??QT[%X/&7^]H(H:;
M?Z0IY2015M8D6HJ;2N@$I?JP/9XM$3B3,7R,SL?H&JT._!&=4XE?>2>CB1NC
M12- 9?![5Z.&\]C\)AM=@,N[K;S;"IG;RL16=.R;^B7@=$W3@@8IS8-,W@"!
M9#60NR)."YEQM'VXB:59\+ )YI3-.5DMXE!TG5<;W,A+U<.G7?FK>B.]@^>J
M?$*-;RIU?/O#01/?_N*O\\D+[?OU'SK[AV"4?+EKH.3P!QS^,US4O UO7L;S
M([M2_'2@3/P@])KRBOJX/U0DJ9T\4-MQ4&O?J])&]4[F'=-2LP] ;9UZ&VXK
MV7PI!/(N5OUGG"_.BRP7ZC,76G121$)$R^1P\7_1/7EJ<$ET&,G[@[P_:(3^
M(-AI9EJB=70>( V1AL;W UL/UJQFH3*/[6Q#Y&X=[25[J:-['XWWT7@?3<=G
MM+JJ>(,Y;*(X(_,Y%QNT1,2PV>$O71TRX*'=.UPT2?-0H+?G//"FHC<5G=-Y
M'R_%ZM[,[CE)LQGE-[./C$4W_([R=1Q2!:Q)HR<FCI0 (:V^I\75H/"G'66<
M1I-\RH36=)4*JM5U*&"=AN+C9DVY#@OU[;W;R F,2$>6L4[B8G1.)6-QC\;%
M9+9:3/N4HG("N-C9R/U4-M>]]8+Q/BWOT_(^K;?JTPJWY :/@MX@W!+<]&IY
M9S]7I\^Y]WU9(-?[PT[9']90!;I.")25\<_B$A_\DAJ]3GT2>),OZDM5PWKT
M2=I6R-[2D,W3^-\TNDHGT9JD(;V9&<VKSH ],;9[1F"CRT!CQ[X)U=H@];T<
MYV@VK'YS:6E(E\%YV$^M!A.O^N#AXM59-&&K<1#O\/?8,)1./F\.>W/X],QA
M^ 4*9!#+TUVV]4D@^U@>^3(Q4X L8GGI2]O6 ?+W,Q+^#-1#((>_(.'0U&0"
MLODK$C9M*,1 EG]#PK*1F>G8L_IK$)<YXT%.GFBV^T$^$Z?*5S3TJUKYF"NO
MJD5BO4_UE'VJE@HLR4*$NX!,M:]N]MOJC,X8IU6[>[D=Q4S2+(_#!NO7PHC8
M9^#B28A5(?#CE/!-*7H_L[2,?[#RMMP57K4W0[I?Q#Z#V^KG]B;HQ8#>B>6=
M6-Z)Y9U8WHGEQ+"R=N>/S,=E^\(:F8_+N4(SK(%Z]**Y+/?,4BJ?/Q<_'5KM
M2S\+=GNU7WNA92#SMD=>O/5[RM9O R;C ZW@O)<TDI4%2QDV22-9D5"6&=Q*
MWKTPVE8Z.Z.IV.4O;39[ [K%#Q2"WC3?$MS&I&:O03BIYEB7DY9>0W "VW=Z
MG8;@X]DIT&0'UM<I5R_.N-XJZ74>AB\=J6?6>1"^GFTE,^YTAAC L09E!Q/E
MWB7F76+>)>9=8F_7)::E2X_4[66@S8W4PZ5E3XP,QF5B:HP4R66BIX\,TM5=
MN1TIN,O$5ADCJ,NB,PK(_GLD[&L9.L.&"NAL1D/YBLFQ#YN++@&G0N<*XR2N
M2L39B0:8?FX@AW\W<KU/_PWZ]"]V6V9_^.7;W;?/MLLD#(5<BG:APYOT2QI2
M+G;001I.65;NZFRRE&5KZYS]_7ZIGZEX1EPI1"\Y2<-%G,D_:_&J,Y13%TW]
MNM0%FQO<-_H#>&>?'N7/-\_Y@J1S,=D[A45NG[(8Q!\D*:ICE"3L4>;\M#'9
M>6 ,\_%2,Y.[[T,L-J6TNF*2Z$T"=#0,G#=LUDE^I,,6@KS-,V[TYJ/;-S#,
MTF<FM9I"B*B'9/?ZG=X<J$; P&&9<C*)_E5DN50.U4\I@WMCX*S>RJ::'+:-
MXD,X/H2SMX9]",>'<'P(QXF?R;ZF,=* 3Z=[:Z2A']M&R$BC0\8JYTA#15;,
MKI'%CISYOT868K+G*QM9P*F31?8VHDMJC<9=W7,8<Z8^4#R)-Q5(H:PGFXJM
MN/TQVM["923);D%>%[0@2+RQS(L/TKW!(-U+77A7?Z92C%\7$=7KU .!]YQ$
M4K6A\5I:K4 *FWLY=7B=D41:%W<+2G-I>95W3_-+3FW-!Z==^;I1>X>QTC_H
MDTR[K;U7!YJ.*KS#L/1?'RXF* <U7=#PH+$0];T&X62_+3YREK6M0WWC8>F^
M2M="^V&\J6!T>X=AZ6_?-FA.[IZ0K>F1SF4=@7/"^6;&^"/A$7@#M8\P,(<U
MY>!AC8>E6_SC7/P<YT:KHNX].&>[WVVM_7.VE/^MM*,TVAK_V86PS-B&[IP!
M.LQW^\"P\P-&ZF"%XAS1!=<,$.D$STF1+YH]QHF$>5^E.4GGTNF^O3RW?])B
M36,\W-R__-G6+#2-BV VIIRN2+R3*GH<-_1%P96LZ))OIL):RL6"7/Q=Q*OC
M<#:0OY91G'):><G+_:-\)K:QG8?]>-C/WI./"?8#>W:WU?'$]-T\HX,WZ7GA
M'"]C>W0)L"X,+,E0(;GL[E(,C^5Z,)X'XYT>&*\OTWJD2#RH!W)DH#NC>-M(
M$77&_LN1(NJ,/(-C1-!I1K1'!H;3\5B/%.X&"4V-%-W6%UP9'=*M/= %Y0RQ
M)J3O\X(RC5C?L>&ZA4X#%KW(LA\?RCYBE0GJSH:RBE5;:H>I0#G$HB/IA-N@
MO&%5CMI@4E#^L&I((/01'O!XF;,EW],+BI3O'WHLP<T/6^] #S!Q@Z\B (0;
M4^VAWZ<,_?8!1B6MX "C=3J_')U2(9!;D$HMK3%0+NX63HE0Z&YI)@Y0G,[E
MZT)3'C,^I>)_H^,L0STVC8;VX6(?F/*!*1^8>L$22)*.-,ID7WPZM@5^"T@8
M%LLB$;^. B8]U.4;8YPNY,%=;Q_5/M)[0>T-;00WU+BR'5QRXVT*;U,H-,C)
M86.54:CSXVUU>)WR@SP = <,F%97]R2M^@B!E7.:Q[S<X]*-+CT9-S,ARQJ4
M2T=?Q3B3=F9F6$Y9&%>!]FQQF;#'WVDTI^<5V8+*C^*<R3]/9CGE"D[-1G$,
MM>;QNB1G%XF^%Y]7IJM"NHR9AX&3;G>$7:7B]!?RY-_&V5=%\C:DBU,>MG60
M+IXJ/^%E!=Y0XMLA71S7\JS*%\D2*'>/9*6D7MW8*=W;*Z2\+)Y?+DH.H-V<
M\G+[[.Z3!U1Q"M2-!Z9;*8O:FH^1]D%EJ/<B>[^CW325%N'"= \S1AY!:@0S
M40-'YTG6N5,<+V6[]ZYU!S+3:Q^5_]S>T3R1O!Q]<P#=U@6)%&9B-:#<NC8E
M+H9-W,,*0RPKM_$3'ZCT@<K3"U0Z=5>/-.#9R9T+Y!D;IKR3L]YQ//=]L)4'
M09S.&%]6ST0>_YO3*KZ8LT P$[!]06,9@)2_D2%'DFZRW9_2^6Y,X[BN6ZI<
MQ7>'X,K'>4\YSMOTH&4Z%_*)EH]54YI,A3*8%9Q.Q3:M=6CK=;) H!@\)%E^
ME<XXD4I\F(LOR1RK PV;3(K79G(-A^CNH\QX?N2?%#\=UEW\\)=0T3.6Q%'U
MLHTDH&;YVQL.0&?M"8(T'0.M@_K6E374!BR$=L[XBLEGHC^S]*ZZ1I0!K];V
MCJ.^0JL*XUUUBLF2\3S^=_EC8]"WM8=3#LHLZ"EGS:_2UK1P6VIMIV9LE[NE
MX)JZM=N8+MF4)-RS2?AW(>PKW4IX^@,XCCFN:5I0B1/=>87^C//%>9'EPK[@
MPLQ(BD@LA10OXO^B9L1-AY'<1ORJ3:4,K=:VP4TECJCO69$)M2G+=B=7 1H
M]?&Q:Q^[;G1WXHWK A1SIJ,48^)-[_PRD% =790::GFA"?.!]AK3U,%0Q4JZ
MGSD,<3R+P6B-"Q;--E7+"F;F8T*U3>V(3PQ;M?,R=O*]H>%55[("O1\^LNXC
MZWH<^\CZ2Y8ZNR1&&BUO=/>--!(.=K@"^<-6/LW41PAD%UL)-77AOY[Q"N'^
MJJ91L/]U&1D74B'\NF")F+0LH&+*\WW1YG;$@=FX_6,&NM!E$/7O*;=5&2_0
M[N\V:A=%Y3J29$KBZ"H])ZLX)XF:(T@?QUSL7Y,74JJ>O+L%X?2!" ES7/']
M5NZL+,[I'>7K.*15)8K;JGZ%;" KW39Y+UU]UG&\=+D4NK\\?2UQTH9V8\[P
M/04>?)9R1QXNRLM&'E>6MD6YE&W'1?6@^\9GA@]']V>:'P"[#>36MG&+TFA0
MGEX@SR6X_' O[^#'4VF3";,CSWG\4.32AW#/IN)F;D1&]/TY%'/W"K3^#*HN
MU)&$9%D\B\.=<2MY,YFU[A_RM1+,\_:)I.2"\#1.YVIPD[JQK_'@:SS@K_$@
M#:[LILBSG*32?]I ?&.[85 R+U0R$#9)U<=CDTZ@.G-I75]E64&C#P47>[3R
M$U1;M_S?LY>>A49FC$?"P''I#K'!,& @]_S>TE7!A14C"!*J3R55:Y9)Q:GF
M$ AY5#G:#$9PS^'65WWQS%5=QTAMPZ$PC[XHRL!%4>S#(GU1%%\4I8Y5ZT51
MW&Y=7Q3E;19%,3![T!U5=9C@&?Y.&55#>3!A"\-:9F,D1Q*\DAI1<G1 +C"3
M$'\A.E@7? G-H!N#04GQU:ETRJ,=.82?3[SU.#UDN%]L8HO/&MT] ETHM5,$
MW04"8TL1,A\I$MA-3'RDN.&^0]_ :<'V7G/GP .0;VQO.7>-/P#9QO;$LUM(
M+'"2WB.;)/.(#51O<9@+:Y%CY0IC>OF/OY#:2)X M$66JUJ1@[#EBT6VIXZ.
MMUBDS70?I5H+S?G1&&0H/G<*J=#4GRFJE18*951G%,<)+9FP0#XR%F7BVMEJ
M%]F=L#<;F&KO,.;TD%/@P:>X#)TL,DZJ?8I+YQ07Z=*X)T\73])PH]MKK8'\
MEM:#).=L26FDN+:53R,ZK32BSRS=UY:OZ%%O"U@GMRDJ3448JO(:I3TMJ.14
MF-L?:/7?!NZZ#.4X/>&Y(7A3"#T-$*15)HYT'W(4<]"2R&%CT+<^#X-J%Z:D
MMZ2#V1C4\3R\N9+1/H5H2'I]>>,A<8DXX4#^>=X>@6P6%#;6C^KC=KZL9N[8
MTH+1(:\MK:^%R4(%%57G"&$Z8AAPX3Z+ 7!!U@.GM>-?*(\$@A0'? DY/G5N
M+-OW#:;.F<@J_1 V.K8'S!BTA+_VQ=Y]L??3R]R 8DI&FL*A$R ;:3H'*)@]
MTL2.[JDJV+(Q7#VN@"W=HGLL=Z3Y%DKD1CN*?/M[^3\R,T'\YO\'4$L#!!0
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
M#I.[A*_GG!Z5#Y3B[NG<@?/37Q6-5N"6K-L_KFM4H>XT1Q5RDEI4R:E$E=P
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
M-(;WS52Z>!B;LU[FAD@U #PZ60(STJ R(S4RY,/IQ>W[DVG,$&NW\].]%'(
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
M8]K6D &QR67M*JV E/+8@B#I<U:T56N:JCT++H&Y'+ZN6Z#T"3@7XZ%JS5C
M#5-_Q@)!\T(M0:F!J5,C+H:V&#8*$P$D1=A<BR9I\20<4:%LO1*Z6'E^Q&59
M@ZBHEE6KJ$"<PU:6"W*W@>Y#VP9%,4K=N-C\S/E:O7XOP)4XC/G$ZZ_@N>/0
MIO\@$E.S]WN1??5&?N^L)F79.Z)[$'->:;Q?;?/@.M,@;Z#:UMM?ETT_O*E#
M&/(:'&.KX^;T9KUNXC34,=Q#SZ%TTI[QO%>(SBFYN;IJHXOP(=ENL+<.(V+U
MA)I8H1AJS1!?,&URA6O&5B,ARQZPO'Q(U\,W5!IO8%NSJ4?V'T%=;X$=V'$O
MLW0(S1#4L\U5S._3G-*"+FXJ2K,K3E5P\5REZX'F%=HOH7(+QP;WS3U;!(C
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
M@]0<6U%#N:FU3-.X KNF*XY_\R,HTJH$!>PP/J[ >L!-YPJL:)"K-X P!M^
MVP>5<>Z?$!XNQ'KPFH#SUH!I=2_$1A? DX+T(:^X1#E/,_IIT]/&8N@1A%JT
M/Y1O'I/P"  D$F)P74A)/:9#$J^K_F%%"VCW^D/!GJH'J-6:Y/OZC.;3:%[H
M'3406S2PB01.:NB16&28OLR0:)'2%<^3.96=AY3Q;,./.TE'W X;)_UP"]\^
MW=!F+B[2"P%^W&92(PRC3!Y44<ZSJ^&6#S_@8>C^;.%8@&&"^1, 6#0GP@[!
MV!@5O!Z8-ZLDRTXW)3?4RKZ[\8&GT ?DSFB!#D8!DS1 (YV'_61DFK3QRP</
M-,O&]*6^A_!<T!DL%!, R,@Z42\-F1YA/(OYBWS)BI6X)/_(^>^BHJNA<)FA
MQRV.@;YA@QT+'>#D"X G G[8FSIM(C-3RH5C('%CJ,<\.X^Z81PQ9!RF$: G
MP2^[=%7S2@^QO!XU5YN[+)V?9RS9MZ@&GT$?-)VQ ITS$B(1(",=,WT$9%I4
M\>Z5*\Z2BMZS0JUG]#YEY9MK1POHGBM( S2BA^Z0C =..@5M(KE;3IY3=6%U
MU8-.7"PPH/<S8]<70;X T#AQ0 /45/H?#DGD55K49<RNZ9H5<,MP4R55;P2W
MSN-H^=$_;"!!TI2?:Z$3"3Z22!DA,3.E6R0A\RE9T?<,KJ>T1,WAXTX$SG;8
MP&)G1@ T^2*!3T'\]%!8*8149/,JBGYBV2:ODD*>F&H9I'@.+7SVQ@LD=5JH
M4I&))6U4Q&3:% HF7QJ7W1E;W:6YL*M.YO_8I&4*?UY3D?D-H;0JY<9\ *0,
MT@<4ZJ9)'R/,W9//^2)NHQIT2 <?J(+08D1JE(C&C#W)9@0O,GN">Y7?/],L
M^S\Y>\IO:%(RB$HKR\U ;,C(\VAYKA@WD%P'Z$>_ 'C2P"<2@4@2?HS,S)AV
MP>NF0K[_H"ZI?M"R<NIV0-_LLU. -Z[>.$#-GLJC*A+I<DG^M'X62W_,_Q/+
M#]_\[:J 4-[JY21??."2;0UJZ8^T)]A,\VE#1A@9U7_?"@E9E.)J89,O$OH(
M6WB>R:+V;_?4CAJ*XJ9K_BM_K23K[N1H@\Y707E=EVN8(0$MN?XC/]2I3'F1
M5<@XO$Z7Q\'L/OP F+UA!,A_#B @,R-U+J!$2+!7!R7C[,#PL\9MK=L'2JKD
M;I,EA:B E+%R4\ATB&1+B4XF!'0&E 'D\%?U "EF,*\(6Q#'K\Q^.2PWJKH[
M*[0*A*#[SD_J<\MB&,RF18#SO76;]K[=C0KL*K"2'2U%"L/.1L8>@T'F;WT^
M)C5)LCV2U-V/6Y)T?H^P<VU8E[E:#\M=W![EG_,%W4DX56]9W7<P^W-L;.\V
M;*MI"@1(C8$\5_';SOVTK/=8JW:2C9CI3JYUA-VDS54,15/+?7+."IK>=Y,,
MGY)B<:S>)%HO8';(X,"^MT<-G#3020V>'./WAN,)66\,E@O-44RKFUDKON!<
M7!7)/&S$C0%#,7.B1G%F#41@J!YSX,@*$7VQY\:*%WNAI*/"A86/NU":\EP6
M[^5K]UOLZN=PAOGA>+Y770D886"[P![=/*<XK#40:0HX02XSEZ1]#Z;Q[THY
M)5(Q E,2RD[V D$N8G:U]A-+ZQGD?:9-3P=60/5RN5S2@A/FQ^0Y76U6S<?>
MO$33U["VP,CP0;:U!AXH@\#YW! WQ1(/TD">D1J5]ANM',90$\2)A&9*CTFV
MH2 9YC+OY7?2" (W_*9Z8$7Z3[H0/L.T+#?"%I*RH7Z(U<A'LHUT-QK#+H"M
M/["J'N@J*7ZA50M4[?4;>QCEVU,-ZMV#5QUQR$<_"M#;G8-WTKF;B+4U!+[Q
M_OE%<+B-<@TSHV#(HK]0J[\0RW"=EK_4Q?N3>V5#8IU7\$5_E4.'BL<:P@$3
M@>5V3HB3= <! AC,R!:'6"6,QUF(86@8;..<+/Z^*2N08.4M.UDL1'A7DETE
MZ>(B/TO6*;=9;AZ2@MXET-*.'^PT+R7^5(:#T1M:/*9S*NOE7=,YN\_%*#^!
M.J#8?*' (C>P;_1\"P&!VY% 3BAC#79- [8HNR78FK-8"QELUQ[VFSN9B[XU
M[>T61Y2FC^!ZTF_9J#$&<C\9P0IU0AHAY:8OHYM96[=CO"V2!>U<^!:Z\_0D
M&7"L.-A_49O2X9H%<!N!@B2Z7')TV0J:08+ *>@#ESGI(ZV_O2O%!8ABUR)'
MP;89,(/F_5AKT $GPPX>1")"OC2HQ+D2P*X.<T1RK]'WM\GSQ8(CEB[3N3@B
M1RHSCCR/CKY7C!LH^IY#)[O@XU9P'*,R,R:=WVQ@8?]D%_F"/O\?JJX>H'@.
MG_^[.UZHQ%\)E0BPA,.-E?&KH";3)E' '%\NZN:IS#C*%R<KR#O^YW KXM$W
MT)F^RI'])_MN00M-+>D CY3K.TYFAJ"=5W%S3>]3."AEPK%2VO0_AA8VN\,%
MDC5;H"(Q/)*D45"2Z9+'BAN$RE^\2(ZH/VRYHO[B;S_^UQX?'/Y@N/+; 7RO
M]8\?_NOB[#+HVO90AZFG['4W]V;HJ7Y&[]XPV7CUKHV2AJ<D&1NC0[@+G4U9
M<3.G.'"9]]YY&KZ%O=89'MTWQS3@R>%-B.95J*]K$$VJ,R0I/<F4C_0^R22K
M]T1+#CR!D"Q[(_G/5N/@2"-BPH=(#A&/:5#$ZRERLEAPTI7U/Q_3_."*6.M9
M]/G2,V:@PZ8&.6O^( "<7.:QE,4AZC(CDEG&UM31.S<T3UGQD=:M3T H]077
MC#^-B:Y1CQHD"$\-WCB\QN5,$($"33B:A$\:!$C\R>"3;U?UG$HYIZR9DS@X
M(P3,:6P!9DA *YE/YXM:JYPOMC*??_C;)ZY7;#)Z_,W==\<G17%;K/)J<9XE
M]WL[6^M9PWT].*;O73T(W&0;.)X%8D=SZ$< G@#\HV/",8"D&]D#@A8K*%!$
M%^0+(!16T='C&F9$Q'"Q/QV?'-PV59RHZ5U6)[JK(G>T7L+&W0P.'BHP8!@+
M3"2 ZWDA]E 7!;@^35LDM+)0?,4$Z7$3PY$RA!EQ!D'@Q2U[4ONEE$_:FA#;
M$4,;$&<B8+\@ #NN\=!#U3[3044J3UJ'MLKA7-^(IVRXT30BJAG353'T] MO
MRH49OY\LV)K32H/A>YZTY/C.B*%9O@/:AN>M9N"0Z6L\IL#Q?6S2P_)*RH50
M ZY86279_Y.NS]A"?<\\]+"M,K S:&A]0 (G'#H!\'%5@G[R]FD% S0+P30B
MUN^RN"K88YK/1]E&\;@MX^P-&YIU!'C0)1L$XC*/BLA][#-(N3#^K.'#=OQA
M>X]6X"-7#=W2IQ7ZX!UR:D4^?#78IM^EY?8(=I((>OIRRV$/E,/1>,-5&NAV
M9.^Q H<A @ Z9KD<'3H/Y4JJB!?.79IE[ G*%IRSXCW;W%7+3=:DF6S32U1N
M4Z.7L>Y3+2#>L_4;+$2MAT6-!]2<%(C$\3.:D9_9T=33T?]C563@BR@OE[?%
M HQ\19UFO8<11[]Z4.^!CUS3*E)N8@CPX,"&)#91/Z5S;G[1KKSLX=34H#@S
M(V.\4Q-$[6 _!(TW7)V:VY&CG9HQ>R7H4'KHW%21SV^:#UNM6'Y3<986Z=7E
MY:;BIG8..U9IYNJ\A$\ &A@\5#:00($('+C=*[ @'31B)0?ID)WA:!DPNY8C
M<TW7? 4>()7_)%]<TRHMZ.+]!JK3R/3]H9(4B!'06;7:D$)=>1N@A+G_]CIC
MA.TM\"$=A$2*58T2D3@1B=2,3&S6N]G_AL[^%IFZ3!O(HQ+0C)0N;;[EF /Z
M3DPJ21EJ)99VA_ JER2H:0DFB9._/8J=LV_15.L0;U*^B\6?;R=$ S^"2G^R
M4876WH8TEEI]U XGMI*,EM?TD>8;^HGV-T73>A8KB/K&]"UQ:GCDE.;S!RAM
M&#>I:IBNS(A8P1@'>JJ 8P-Z/:N<4UK/(AFG=TSOR5;0+@>@$M&A.YH/2H^P
MS(A:$2N:7>2<I?GJIP85S'K><5:QK#-VO IE'23<5"3#S<JZ IGV/()5'.MC
MG<$*8TK*>7*LU?[NFY?5'<OV=H3R=X2[;&<<WYS>./$EM. .L'Z:L5%"!*R&
MLTQSNN Z"?^CNN*TXT>\U!#3>?TM=.%62$C3U]%U<O3 A)*;NOA@1*B_N2*,
MQ1H94L,E@,Z,<(1(@U'[$^!$WIQQ,R.MXAA.QLS(;*D>3N_ER%TN)7'/DSFT
M$WS9/S'.62$1_G30I<=V&*RV; @NU/8UQ0NSC?W/';&= 2E1VE*@11J\9J3!
MC+QI<'LKMGD<^P++I<P5^6-&D[7N ;.0LM[7W,65[0P?X9J\XS295(19/]F'
MP\P&:!F1\1JDS*(R%*\Y8[S=X>,RWJ2"-%2$'V2](6H&8[W+XC[)ZP1;CF+)
MLG315'&\DEUKZN1;V1(V3;*V9G'YOFT./^;^\P4&R=JNT?&]%;KXSL@.QN+"
MJ(LSJ!0MUF2+-MGB'=]KZ8T?6*A%]E6FC+-R=O7 <JJLMZUZ!%.H;&\H_\YS
M#H\(@+'J:"NIQW1($M7&O*9P4*3Y_2DK"O;$_SA+UORW:K^PMMT@#NU+-;"8
MUJ4:*U>VI<MYN[0L6[Q(BQC1FWM ZU*#0T=L2UWR!]O-MY U,*8C]3^$W(V[
M@X7:;;M0,;O)%F]4:EY%2W(;KR&.8N&9'E6B'DEUN3>; VEL"(?'D0I4S,-(
MA9.KH\C=G%T>1$W5Q@D?0Z-\.7((Z1$^ZN[]G&^@#UZ-&,3YIZ)[WCFEVUZ5
M!EO9:#R'^UH+;LQ-KH6@JQWOB1HNM[]$L=WS,[+%DG T8W=ZM>?M$=F 6**P
M4>P79;GI"U$5_W^ZWSU3(2(L1K*):3>#Z%LL #8B/7H_LGF3+VA1_[W3M77-
MWR]G)*>B\5V5/).GM'IX8!G$IQB$?_N,B$:NZGY@M,U2A=L0-./#W?] <UHD
M&70W6JRX=5D*7_XC_2";[*KV@-'+6+;7 N*;TVLL9N1>XC&3G:QV4(G:DMAP
M+9@=@6,+;)$)Y4)>:PSD5EP/  R:B&2$&3H5Q]?\;1)R7!]:4SJH=-AY_)S2
M7J.H!MY'"NLU&$2@^YI#<ZT[O/<;)Y4)(I&(&T>@3?L1<T)-T( 9'3(^_N4Z
M>6JJMY2?:'6YO*8E+1X'TCIT7T3G=HP!\)YKECR150,Y4@*$-I$9GG+AF>UF
MLUYG*35CM,&7;)FL=W#OFG<--"YO#=.UCZ\TB!7U^!P(^AQ[W.%Q&::%G#@-
MH4-KS)C.4:J.'(018S@_ILD=X,#9F=N'0FL$[9<6Y8=_;(9NQ/1>0_/3\/#A
MG.+#>.!\WZ[G5K$JR<PLI5MXA61;5(33H^P@\S__Y4_OCO_XOPC5F*BW;:7)
M9 Q+W?!'_SGX7Q[HX@?&%F;G__B;MDJ &H+O_=9 )O< .JX^H$'G/J5 EWCA
M6>YG5OQRD5\5;$Y+,Y8;?].6Y=00?+,<0#[B=N=:PH[+<QJ$[N,Y7>I9!?WJ
M]:OG)-U=ZL,?#'EE.X!O5OC\Z>+VPWMR<WMR^^$F2MOZ#I&8>N:ZRZCH'WLS
MY^)IDW'M\S-GH+*B"\XM59'.^5_BH/R<IQ6<FE>T6+)B!9Y4X2H\>4J*17DR
MK])'?H(.!@7Z!V3(1?X0\FX=UTB#&[!!FVSQEA4ZB<!<)E-L<9<EMXC$GC3H
MDR]B D0[B6*ZE$3VJ$WN-EE2D,4VHP2<_@^4S!^@.C-)<U)L"=Q<'0"!WUS?
M?"[?"CJO.W06%]HDD71^<W5S4KZ-T.?6[WYCX98^8B&?,P9);O/JY[1Z.-OP
MI5_10G1K5.I(QB,X*_*CA!2OY(\2)3<%@%S,V.9BL8%?=R$5%X83*0DTSG:#
M!8(T*1ML9U[3*H$B&A^2 C(AN-C@DIY+;;YD4%YCGJHVI/Z+R'TX#L!_\3^)
M :$U"E%8T(#0#$^]< U3MHA<<E6@@"OQ@C[0O$P?^?Z8\PWQD=76U6WRK. ^
MY"C8%BIFT+SW4MFB0QC@(V(L6H0(U[5P#:E]3Q/K.(W3'0;)8LP100.6$[NK
M]%/T1YY&%POK'=7W3A*U.:>4\#Y&769(LG#1A:VU\IX6Z:.(=[S(N;TB[,;R
M!WX8 :M?Y&WN?">?OF/!C+&?-SC8V$37^/AG^09-TL%S1@!3\@9P?6OLN/ 5
MF>=MK5FP!0QH8E<4G"G#<>:*I]"F\LYHOEE7L"C+R3PI'\@R8T^$+]T]MN@M
M%G6K@-D::M3X=A4/,$WJ6+K%/[(G6OR<9EFRHE5%?RC89MU;3%[S:8R#6CVJ
M_](F'#+9@B8"MF95><\SP7EYK^F2%B6I&$ES(0Q%H'?!MT<AJOB"O[=_UA%<
MMQKLQ PI&]&)>KFFD%DBDH93;B>=W)7"N:3M0QT;P)D+507(>W$X<=%0PDT#
M:U"HG8KB<J$3D=-F)23S?VQ$7Y7.<_Q/OC5VGO_S1!R2HVLXZ(_46YAPMNBA
M03/"U!IO8&U2]<C!:E:K44"5J78Y(W0)%7Y2]!6>BV-O:W /0Q PH/.FQV@Y
MR1=_X9HQW]7U+2 75R8>'OLAT6X@/.@XAK,X'6KTR!:_B3F5'"PH\[%*X>J7
M@OOU$R<5-QVEXW783AY]'EM15#5NJ!-%B0#F/'$Q&QMS6L"/=SD\SB3,F%;A
MPU7U#P:=5VP#5",(]A;VI(2V%K'[@E2G(W3/64'3^_QL4Q0TG[_<%DE><DTI
M97GC5;VF29;^DRX4#&<^ )+]] &%DM/Z&&$$M\_Y(NR"!ECW$F)&:B1)@R7I
MH#DC=W3)?R>WR7.4[8E@369/_X@MID204@GM-_B'^OL2SC,Q!_U>4YKC.&LZ
M-0(O7O>I$<3<M*%R/GO$[I8X$+Y=12LJTJ Q(WV=JB;2A4J730?;41E1/YPM
MU+C\/H(+L$G@>QG=R]KO86VCL?']W\WD]T<5]&S-1%^E'>?PUGTL?HSCKM)?
M H:F:VP^-.,^/SSGF]/JOA+D$<H#P9W#*V,X S:;%G.=823<F4_Q=A9&MM5@
MR)H53?>7/0;K<A_*&>1J?E:) X?3?&5;:Y_9QG=8+X7#&?GB*H>:;#.=5["&
M_,#0P4SW 1Q0QKJ;.?G?5FD^SS8+KL]S(_YD/B\V=.^"?2EG$G/7:?$>PQ _
MV(Z[@OAQT9Y*^)2O6%D5M$H+<8W:6!GZ7EW;X9 [%0LV0-)/C41KJ,9W!ENO
M$7--^+CGRZBMJOF6RU-F(G;J5&7LL(UJ1-%(1L1U>O]072X_EW0H45GK'2<F
MQ-[8OKGN<D]IGA&!P!%;'FTX$\I@.7O#P7I6" _EWM1(83JQ(":"BI>4%L(@
M*<-5O*,<.%78+E?)B^RCN5$VD#%\'5L!3Q-,L$IXFOB@*N)YFRN^,I[8=^L:
M]D0L=&/68[8TCJ)5717<<$O72=:@I:%3*=]QH%$=C!W#<#] PM9RMYF5C>G>
M@(/$J1W=T-;?YV=RM^:G=QU,S&5%FQA6$MC)4].%U9M&H0F/D'4:1_CG'.H[
M00DUNOCP#)7Q3E;P"7.>CXWEXW!7P9S$2:]"SOFQ[X *-E)* B,%7<N;,=C-
M:9V$^!JT@5'&U54-]-8AKO?%Q.?BP],RA=O9B1TM@S>S&D0,&5A&BX(N9 CT
M;?)<1T'7CD=U&)G.6_B@L:'1_2>62/!P?\+A0U>D2!RE2V:&I%U(L956G-<?
M ;&*$SN]RZ03!,1I4:7_%%G*-:XG2W[0_)4FQ3E_02W<;$?$BT LY("&$Q9%
MI.41CB((=^+M ]=;$@ ;ZURP9E7F@=K3,%<ZOA= \Y;#M'4]'HSCV0?9PIN$
MB=*'F$^OI,7L$7N9,]<?7H,!,LB."+^D@LJ3W,/G?/$<;.'N, %V,(";X@8&
MO'SO7]S<<=OWCZ]P^^ZP(G+W'M(XV.8]2\J'\XP]04(X;3*:;MDIO:;S+"G+
M=)G2!51 3O/;)YH]TA]97CVH[ATL1T-N92344#L:B1YF8P>C!&)_ VX$D!,U
M&.A.%<.*D3M*NDB*9L/\@>-W1(<<G@2!+3\SQTLSS3-=;8ICAPEQI@<TNDWQ
M\GZFAS*O.5_]Z36>Z0K[VH[&46X"]"+A--YP<"L0. KN?,?O+VJ/[ :^7Q7
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
MG$_B*GD1.>-\!XKX0/TR,\A1\+TS3*#Y9D#9GFXR)5:P:\$<$3BD_C^G<"3
M/KI.RU]DRP'X2ZW]C[V!U_U5(P>0?UO0!"#.B(1>?YB8WU)G$1B"LN%$9KTC
MKFDF@TIODV?0@Z'U+=\7?*/</"0%/4W*W>Y<*MEI.1Q6B"+!AE)HL?AA=-X
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
M!";;RM>8@<N.EM6!C(V;P'*(SR=64>AX+QK>*S:%[FOX.A>#PP<H>W'(KF_
M+GM+ !'R!5 A I=HY3#T%H!AJ1J,!3^F.6UZ/"K8[?_K[EE[&\>1_"L$#GO;
M [@'TW.WM[MWGYQT>C:'Z227SNS@T!\.M$3;VI9%CQY)O+_^6'S(LJT'28FD
M,L!BIY.(K >+Q6)5L:KM$TO1:D[ERUO:A&G56W04SC9]1&FV>?]$\AT"T,=V
MHF%:A[8M/M7ACK]7R=&6Q!64O]?0]Z!&GO J'52R$\UJ^[YY''3GCZ E>@;V
MAE3@7SFB*+0&GVIUJ:,EF[W5KK6'IIW<LQ7O=T>-M>;GL:TF7O )[/M9;+*3
MYA#_7>5)$2<\+:_7$:\Y:DQIEN[9G9\@ ![A+$8< =3$(*RC7)?MY[5:='GI
M3>I4'NA3CK-B#8T$?Z(TOL^_D/PYB?K]+D9C+250"X;[1D\JLUBA ?\&1!#-
MD40EK+/$;"WH* ;[$TZ)$[LX+,L'FD!)!(9O?VA2;Y"M./9.[EP.C] 1+A&'
MCY(,,M\#!PXUF4[M.!E"X.Z?26XB:^W?CQ>STWE]2AAED.<E6AT\;I>J/L9Y
M3C-ZPJ^RR&9YZ(D1]W\\*CGH?%+G 3-QXV!@40TW9+1V@+47"3[]_ HH/KT&
MV=#GDXF0'[.K78A"6EF##.X5I*"VU,>DP)M-3L0SL/NU?"VFY:(Q&FM;6U<'
MAFN).T4"C'R)QEQ\)V8K04>QUY]HR@3):WCCG!]Z+:[>;VU%KVU.YZ(F@9ZK
MMY"F5C]SJ1''O$F/?-"G(SQ]GUK*3MN4GMYOSDER>CE+3=@U%\]7CYUN,-*-
MU\M/<W,MGU<XD]YD%?3]70&-_4>RQP=X%5C<KR&\#]']CV35E7$Q]+EU)*Q]
M6G]U7]KAVY5Z&4W+7P4M&1A.)#;+T7B0P!&8DCPL%P\2XBSF-B LU)1KODNU
MJ.<V.8[*7Y-R>UT5);-"\N'PLMGP<>55!L%X*IR"8/F1P@2],%20PB5\:ISQ
MFEQ6.3%DM*.<^(\TJF"G++.L@K?<>YJ?J^NASRSRX-NF<W]=$3"1 (H$5.^I
M[[V<I+KL\::[/N-HFV0D/RRS&(KB[P&OWBN*Q@A+#=4SLVOAJ4'S6'X-/.R5
M18?3U()]NL*5O>Q?N<1\8/_C4@._:62(W69,T[$E/LAR\ SP'<WD#[U^N_$3
M&<J8/4!O28CW:U2CA20J3)G%B&%6_VSJY0O'A5@JN9:ZCWV7.KRJ4LSLT*2(
M4EI4.4_.9*8IBG">'^#"AWFE080+]9<53GG-M6)+2(EBR,AA?V%';;1ENSDI
MR )MV VJ6* (>CO&O,[F BZ)1;7?IU L=$O2&*W9;]95"3 +#%FA.2HI6A%4
M%22&*/8.9Q54(JMRAL<"%?Q"QN^@.=KG-*Y$W@_[9T2*XGO(:DNKF$VO^CV
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
M6GS_Q]8.Z[9)70NP@HH + *X89/@!UA+S?CE37S8#I"/R41,^8D![NT#/SS
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
MW8,E"8A"IPV-BZ(E"6#&L!B\[FBMPJ"I![8M#*KC^0HN>087;-9T$X2FC\%
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
ME.SX.]Z<].;DF.$\07.RI?CS1J8W,KV1Z8U,;V3J&)F]J%76#<V?@U2\V?:
M.%W%$QVBRJ+XF*%)"5W/GO&H!Y$W$RTUV/Z</.(TP]$M_U]&0OZONXP?A\\)
M*1PV1T>E>%1P]H18E,Y*'0:0F]_KAWJUEZ'\"K.,];C?N@U\P<\_W6)\A]DC
MJ7;@3,!Z?@3J+"[@XO^Z6=SBD"X3\F\L-H[02&1$:;RJUM/WO$WL;>(QPWF"
M-C%8\'GKUUN_WOKUUJ^W?G6LWUX5*5=82Y%\;,%&L>Y/^#5@^!$G.3;T'S3-
MM^<OD$/@_0,#A9&;M@5F!LLWU9+B?DZ3C*$P^T*RU7F>9G2-69&A<I2@(G=M
M=+"258S?DQ0MEXRSR^X2*#8!A*/67*M859!<<EE_P<4!2U"\VX3T;/L!TR5#
MFQ4)9PPC6-YW!RMZ%X1W08P9SA-T031>.M[EX%T.WN7@70[>Y:!V.72F&KG"
M/&J2&6C.[C<.Z,QTLNY2^2T@"1\EM(AOQJG^TD7L.5< 8'@/RT >%NG>P-PL
M@.VUGF(@'-(T$<E9XOE. =T]^E:UDSW#"5X06%^^#E8<K-"@E-<<2NW.G!VM
M-E1ZR6*!PS)%K]HFT0M%A"*2D,-;R#5-],V7'(@&)9QG>$'9 68NZG":<:TI
MB2[Y[\E2EPRM5AV($I\3M@]"<6BKHYK>TCCFX(J8BB813!?TOCKOJQLSG"?H
MJY-K+MYAYQUVWF'G'7;>8:>3(]2!CN@* ^F0K:5Y>3JNO.Z,,C#-)ML=M%,[
M'DRNR38'[=K6L^XT_CU 89BO\Z*=:4!%F],B"Y[A%9<CHDZ<T];4F6RTN#TG
M<POPO//94OG?^0HE2YQ>);/#5A7->,^/-ZH4YZ*@5J?BKYNU>_6U&[$HS ??
M@ONMY<^%,4I3LB!5<GB>W2P >P5,I>MR\8$\E5T<BHY7]3Y+[[,<,YPGZ+,T
MD_3>E^E]F=Z7Z7V9WI>I8_YWH#NYPD#@JL8N[;#3\6KV8<!8=S^]"U*\+'XF
MA\=U#+U-D+7L.9?@T'A?TD")C) M@OE2X)MMW45P5P)VBS>4B7>JCAZQ.MM6
M?X2[!HQ6\RX![Q(8,YPGZ!( "2SO ? > .\!\!X [P'0\0"T4)$LFE]I!6]
M2/&\6'D!B#[P?^<H)HMMV0J^>!=6/_S?9G4;)EI[^+S1UF\"0+Y>([:]6?RY
MVYU9$OV?_=[,JJT!1/O;+-23]=F&^U3V:'O.]G::M]/&">=)V6FM#K*WW+SE
MYBTW;[EYRTT5A&RO'EJ/F06<#"@A_RYOA AGB,3\!N#0<;AU@V:@Q>Q%S33
M\198KQ;8)[X?]W3_)-%>7KPO]^3^^98<FR5Z,[L -5\_8':S^(B2?('"+!=O
M]5ZBL*I0J851/@6F:7:N$^^@NME@AH3OJ'(7-9E&C>,'@M_;=!.\*4W.[.#V
MA5>G1Z!+>G5Z!.KT:"UM\.74'Y>,CC8FNH=M^^)MD)9&44 704J629%AR/]:
M.9N$WVE#8Q(*6-M9'UU\RIIMTAVPWG+IU7+A1CL_W(<FG1^Q.&]U5H!\9 >@
MG%'Z]>81LXBAQ2LMOF:$F=[NC@6W[]@KNJ[>XA"31W'CGJ%8O&ESE5Q\"W&:
MWBSN<3+'+,3BU=S#,*FEUW+I3G>F2,V^ILF27U#KHUX*S9P*F]'>>$I9=F0X
M\9\.QYK_\-='](VL\W4MG(U_[Q\JDLBAJOM[[U#=BJ*&&N%7^S<[T#12J.:O
M5@WQ2A"?T21/<7J>,Z%F-=CCM6,'<GC,^/T5D3@7+67N<,@U.7$HN2B)<WZ_
MBU[DH@ CSZH&VQ>()5Q-2+F *=_G6@O%H0G/+M8>B"Z55+U;89Q=5T^[U1P%
MZ/#!8:]5J^ 3[,*?<^.$<T+M89</L@HG5R](AJ\Y=T=77$U/EH3?LT6'H<\I
M7N3Q-5DTN>0@4P?B_*I762F6PNT]0TG*;3S.$A\X0XCJM5N,8M$<J DW\ (#
M87B-DNAJO6'TL= )ZY46V&"[<&.4XA6--8!7S["*P4<4KDB"V7:61!=_YV0C
M ))B )AA%8,YHQO,LNV<2\SL&*:S[3V'0W)%:,P<!T8"*NFUH3%S'!@IQ3)@
MYE"!*<1-. '1MY"DHNW?'&V%62?7-!6S?)#-J<3)+Y1]Q2P]?I=X[QB2\PE@
MYD"\ H",\_<GFH1M$7RVS BQ;86C+F;3"O3Y + / -<A7^^HH@J/T=2Q!OLD
MJ+X'P!7:Z"CCM(7&ZPJ]U/D#VN:-*ZD5AJP$\2NX0J)F[I&$$J:.O/3RD01T
MIM[_28YW<WAMZGBWE <R?S:8-"-OVF\J*J%>3#"=1MZMWY!.8%^I*T=-K97
MXG)3OVIT-'YPVI K3 (FBDZ&BBL2V49J],B%K4^-UDW_E6?\G5 R=(NP47_2
M=;14,LEYZ$_.CI9,;4,5_<GE*9/,F$J_G 25.F"G7YTA%"@_$TR7WYRABV8V
M 9A"OSM#(?/4-S"QWCE#K%[2@^':IR/*>$_5(;9K]GX*'O*4(YFFXF&?!Y(4
M'VI;GJ>YJK5*/".X?-&=;Q=2@CI'[.M%\D@83<1W.$%V!N=U'#:78&E,LYSO
M7YZ%6<CA24DAJ,4_&9;GGX+G#8Z-I'!$/GIHR*NK BWQS>)/6C8#YO<@3K.T
M(G53%8#98D-5^U3 GA^$\1'<M[AXCN:<IHU];. +C ?#.:./'$":H/BHP_-5
MPD%&\6Q?$EZ\N<,OQ S/HG]Q)4/(BW-^69&HZ(I DT+++?4H.'5Z^/A E/U
M:?1$XGB>LW"%4GP _@!R$]N Y@Z$%S?NBL_?T^IP[G81IY\P5Q[/4;I2R "=
M)7PNNF_XY/-]?;YO)R%?A5)%C75(5R@$R)R **;.)$ZH&<;,@G*%0#;R!$:>
M1^+S! Q\O-U8@:>84M!"=3[!W (C0^H$DPN&L<1/,"7!W"%D._+R2["ITI>*
MMSGP3J-I&7K17=9:[,4,L!;!E^($L6UIW5<_' S[ZA=_??RO%\;\ZS_T&'CQ
M8: QAX&,^J55S6H_8+ID:+,B(8IK]Q<TMG]H=]0ZAJ&A]YQR[#BZC7 ]K<DO
M*IGB_:#>#^K]H-X/VK8$4RTDJ9;LGSI-8+7(P*MEZFX],(,T*:%3)X#W:WJ_
M9BOWG(8&9]N@_S585MZPPL E^UJ; (EBF[8YE:;+6S/PVP'HLRR]>6V: M1@
MANS^[$T[;]IYT\Z;=E-17">KNWO%51DH'5I)_2W8U9M&^*%MK FVF#4%5 <<
MKV[VJFZ^YQMPE:3\S)7QZD?,[]*LZKYV\4"R"-7IFH!IG3ZG5&3 D/5EGH@6
M8+,EPP4[D05JKN:!SND O*IKVQU."&77^!$SM,2WXKS4 =8\^E0?!RNJ6W$D
M>J8D9+G*JD\G2TX5?'=S>=N\RYI3K2KJST^)I,BI>>" \)ZAE*1W7/:CZ";Y
M$S$BM A!U3<@+)JG#V3F/0?O$H7RQYF:AH\"^D]H+2_]4PVW#OL7+$XGCF:E
MN-NE- J&D* @F364LV!%67:/V?J,,D:?1,%]DP7^>J1W<#CUGL2Q5)-(]Z9A
M@\$JE1S- [WSR#N/3L-Y)-''J.X=ZPI-&J48A<L.5VBA]JRI-'I7?(SRDV)@
MA[M"&#6+R-4"5^@@$QOF!KS[N27=12DFVV'91RD:HQ10Y\0)%@8"S.X3K/\S
M]<V=8 F@IM_IA&KW-*,78,I,OX6P:5#,=E3Y]R#D-"99@'9J>,O(,GQ!:]%E
M79!\A'FX"+,HD*8QB42Q[ZY_[1E>4+87N??H&T[?8\XD(2GE1A)Q78=EY-_%
MC]K1Z?:?[#ZRS3]Z\4TT'<<"=/ZYT@C"Q<-.93^#4K]+S]&&9&6'Y,:8M]%J
MG2+5?$?<XJ(E@]@7O=#XT40?)1]3E+P!V"\XCM-+Q);T#"5?/\V:89./[+VP
MMO;%O:-B6LF+?'U"5??^X3%4S>\C]@C5JV<+CR!J>*6R;V@:*=3X?+&E@-MY
MH81PT[QX/T(2'FP>.""\TA"A;*A/6/%I$S6X[$ H.KHT*S&JX0-!?XTS87+>
M+$K.O\DS;G.4X0Q9"I%JVE#8< MV!U,3Y$=#1@ E0(JJA@\.^U7"S5(D=/+R
MOY>4S3$C-&IN@Z&[S(AVZEJ8U$QZBT"G#8Y+I0'N_<E<'O&_9%L-O)J6&-&.
MW6)!= Y;&SR;%QD1II_%LU71#K!SNEZ3HEO;)<:'WHL:2(/6&PC_6_Q(XT>Q
M#\_YL4YKUIKC$QA] J-/8/0)C*,CS4DG,-8[8JC"(S)UK &>%*KCO7"%'CYE
M4\,^I*:6B2L44B=BP6QL5S(7(1P##F"X0A0UDYP*>\!$B88MY7Y.J\]\?B8W
M^LU\GFS:KR28.'76D*KGDI#NU$6#'._F 'M_N95C8?;NTORUDRC'0@*?YM^8
MBERG@D)#"2>8^E]'+IUXV0G5!9AGVYU01< 0R:2G5D[07<;J"94;Z*;)@$GS
MJS.DN99DL(#)\9L[Y-!,10*3Z'=W2-0JGP%,L'?.$*SWFL(W[FCR?145OG%;
M>S=*K;%=5/<NB L]I64IG6H9:P5T,$!\V9Q_!T WA^=8K;\5PO!F\3G%,_'J
MQ"P,\W5>O/HI*>\S7\BWWO-O"_CL*I]=-15W_D@C6-Z=WT+#;7]KV59MW[SA
M2B CCWS]1QR0O;&7%B]'K7"TY"9Q@$+^9Y*1UBIP5Y^SIBIW"[!7J7M5J2\I
MXQ9X<O$M7(E8-/_Q";'H37-E.FB"H[I^ ZBW.(Q1FI(%P=$]?>&\;Z:DQK3.
M@?R$LSL4XQ0*7?WX#L"Z7^$W[WY^<^SWN7M"FV:X0!.Z >SMNU^UX%*.MUN[
MCM+594R?_N "%W_@DNR:IND]/</'._N%9"N2W#_A^!%_I$FV:BS(-UMM( OS
M&%I^V4@KNZ1C+=>V[V[-<TX\QF_(>_YYQ9,&ZBD#X7!)ON$(5)O?.&.P'@,[
MB Z>_%N2?I4^5J*>,C@.Z>[<GFTK9K_%<:'VI2NRT<0.OMA >',U@ .#8L6#
M)O7#!^.\E.M6A<&35E0]4%PJQ31FVO5NUJJ+4E0@4ZSB4-%S1V)AB3>?%?G@
M@>&6WB6JX4/ ?BQ3(, WC[<*_2?*3=;=@90RNV2D58AOLA5FYW2]87C%[8]"
MU'-+'PL)7ZO[E1E=!^TOW"5RW:-O#;AV^HW!>@<\!T:H6Q)IH!H^..S20Z6>
MX.-&/F[DXT8^;M3FL916M@755@%<(9Q"T7Q-&(5BYPI=0*8X-7&AN$(AI5)"
M]54 5VBCCN%"##Q7(MIP&:/M?W"%1)!GSZ"^05=HHBN"X1Z?J1?]ZE)(-^3J
M"GW@@D?I0.FO-F_$+*,1)76%9<P$L6X8PV41;69V >*G_=5O#D\TV1$$)@2X
M(J'4)Q#F#G7EC$'L+,U<&U>$M2%I $E2KL@:WQ[%YU.;%57",AKZ$[(3((TR
MTZ@_.3M:ZO0:G>U/Q1DM/3O*F+1>W? V2#,:?EW1F&](&HBF-]FV;0V#UJ+V
M*A4,P/+U"+W6(\PR+H;6B'T5_6VX&&C*WH4-[@"@BX(G]LN7W:%V/];F%D*G
MG>J3C;=YC-_\^/#+FWN&1+.5>8R2H_!!(TDA\SJEZ=T*B?MMD[-PA5(\9W3)
M4/WS@^#Q=M/@Z7I-DSLAXN:(W;!B;Z,_49R+3A$%N"_PT)@Y5/$X-XUO%@5D
MG]":_Y-S0Y**:C)%>B-\HEU\:IE&DE*FGC "^.4[ 9CB$\L<>$JG.&RO637/
M5I2)EFRES&YZB1(X>[ F%G70[7MC'< \C#%!%[+@."@0<<OO%F>$&V[O<Z'E
ME"U%B\/>?)[@2XP:R^)F;(5DL<)0..8/*8D(8MNC2U)V!:G&^_15G[YZ&NFK
M &V,FF@^SM!'*2JHN8KN#)'4@0Z8Q'4E<@KB&AT7D#.$47,*T#QTAB(@ :SI
MGW$ES&XCB#SYI!0?1'Y%$@/WWPG%DTT=_"<85#;TX9Q0N-@XM-%?HM/H:-2%
MNZB_I*B)DZO6\02FECN/8W3G?[6>LO%3P(I]+7ZUX;*C=<])^(KVDC5T8?*9
M&OUF:ARZL\I2QSXG#(=TF8B3\TGT=.4;Q0B*Q=^J9XQ>=PSI_@.=)@8(2%"R
M_8@R+G4*.5J]NG"37!*69A>BCVWUVYO%!3\:=(O+\F+RD!<%%74(=[!LIVB^
MQPLN,*/C#PC%I#D! C2ABYR<&M0/U+JD[,N*A*N*G%]('!<DG6679)%MJX&U
M23L=K-OI#I@"=)/@/_(DXG=R#]B^6KSC1*;D;R[*B^S(V[V\OT/BO>A4SGZ:
M4T\KZ^I3+G"_67 BA;L-IVQ;'=DSG/!_9()(M:()/KM39BCD_C5-EEQK7%\3
M]" >P"&RMK6P&1V -D?L:YXB;1FI,Z^3MK^[<R"6K^IFZN"J'3A0//H,Q:(G
M_-T*X^R:AJJ6>ZKA@\,NS8923[#<@K(TYH3<YRQ0J>_E.=J>[Q/7A2#(&7M]
MM1BO,UC+S9<B[$COK'Y[\Q"3I>SI';U%QH.I>&4A%:__\A^JWZ>0G=5;9TSX
MYNM-H2A_+IY0BT.Q1>(IPY=[])ZDH3#NI8V+.UI_ O3A9E3I+2)A-5X\KRIN
MB9!SN+AO[_E]R^^0G"4W%3]T0#:3SXZ&FI>(L,*Y=K,X'!(P46IGCP:W^HT!
M(U<_?2#LYL*C4*I?Z7-0I9U;H=,LM_@\UN*4S4EE@P>&6]&85#[<9X_[MJ0^
MK]/G=;9I4"&5C517%KE"%Z6M3?4M6U=H ^E_H[YQ74G,4Y\@W9B!*UEY0,KH
M>PI=R=F#"U\])=R5WD! !C**A[@B?M3"&.8V=H4>D(M;.X+BBD3V>=(^3UH[
M:;.'=(V32Z+N(>'BA+*L^TWC.+4D;/,<AQ-,Q6X=!#RA?.S^LQE/,%V[7<@=
M3+#?'"88*,0(IM3O#E,*%J\$D^J=PZ3J* <"K@E/WYH8*C,"3N/IFQN=I:7!
MB>:(?0%*#+5>\O1SD(HROP=1UQ:$1YO9MO))>V%[!5"&H/DZJ%[KH(YJY<_1
MAF0H+@M0;_GNLT<<<8OH,N=B&%]Q82Y<L ?C_$^<"EE^L[C),[[925'Z>S=+
M"[&/HQ=H]/RU4VU'NS/[N:G%+;&"LMP<XU_D/RGK(1HG=4O-ZFM7"3(!4C*M
M4S YJRTH6PNNFXD7RE+!@SCZF,<9V<2DH1Y"-:DO$(MS4WSR'K$ESJ[Q(XX/
MIT4!JV)VIT#SLYTQ(O2Z8@<_)R1+9TET#$W1'ZD@7W/E28MENFJF?":NKF/5
M:\:8>-).'/"S[6'('&W%KPI0RD8;1Z]4%>Z3^Q5*;DK-F.MJCQPUKK05_#[+
MCG:$6[8'].J(,@*PNNU9#>&$3O:Y/@\Q9=E1#B+_Z7!1\Q_^>L]5R9"O70M;
M\X#>X:KZMS2"5?OW_J$BB1RJNK_W#M6M.!HU:E;MW^Q TTBAFK_V#M$]R43/
MNBNN8#V2B"LK#;22CK,/I7B*Y/B]OWLJT?%;K& UU[F\H>5I\+5CANK3#U/J
M&S#17F>@BHM=R/*.0T4J7>K5';R_/\N+ZIYR=([_+OQ=W%CX;YS=[B,FI4N,
MHUG]2HQKZK=M%PC7*'U8J9ST4ONQ3705/(/5%CVW&.J5,N!H^^\Z]*(8?^!+
M9.E54IZ3!E+8^OQ0'=<MH?<%BR0D?B@>,>-F:?'']RC#^]#?P.17PN?<_OQ9
M2+8=_H5L&VXS9,",E?)I$[8'/2Z)BJ M6LNK"/O\E*] ]!6(O@+15R#J(U_O
M1J$*?\;4L98;XR_[V_<JM*=.2K5OB7;@P)DZE>!U#Q+_D"O%0<I3![),7:%&
M,TM(7-Q31UYZ[4@"#5,O 9/CW1SVF3K>RJ/?3<S8E?(X.9FZ(L+(>44N& 'Q
M+!>$)$BUDH6Q73D2-HIF1UZ([XMF38OLP(ESIU82:Y"T=T(5KYU%ND^MN-5>
MWO )%<.V3 H]M1)8[53?$RIK'6LRZ@D6RHXV]GV"I;CC"'V?8&'O:!*U3K$0
M>-C4Q%,L"QXJW<QZW>POHG!T3;("UH K\X'H=<,U>IR$!+=^-]!P>7LUM*T
M])6TO5;27G [<RW:MPC1=;.XF,_N<%ST,[CE6QAM7P #FM/M<VR[C]V3-;ZG
M0E3$.,.[+_*/ P!5S.T4X&OZA)GH^876.,NXBDGS37-9F'KT:58&S_F'.;^C
M.-[>XG3#A3IYB/$<,=$6LQ92R,3N'TH[WTNV\F':.2+BKA=7U*;HW[![")CK
M!)R87 ? Y+&^S+S->MT6[%*6Q5Q,_X'8 V6?4)8S%#-\1_FW<7K/<JX!X7,.
M74ABR:-KQJMTCL)=ON'6=IY$=R2KKUO3F]1[H9@@"]?;N*:5;47*5$,UFVQ8
M_T6 AR>9EPP74N$E/(UE;-IS[9:&E<[:6105RKJ\?D0^V&[A4?)(&$T$-5%<
MW&RD4.($ TMJ\:#31H.+-,$</M$J/M?B=F?IS>*<VVTD.W+KEW*^ 1O5M($*
M!D1GQ/-C'?YL6PAXS '=_[I.F35?8$#\MK,P9%S-.4>,;?FO"G_5N?2]/O@"
MH]C!BOC2@P68816#%^I2 ]0O1@U$[1=0I)*3(1LZ*,Q2YI /]H4YOC#'%^;X
MPARSY#^IE4-;&113)P_HTJ!Z8MH5FABHF-1 VW&%7& KD)K;6J[02IZ3K?;*
MN)"2K9+*6M[MJ1,$GINLYVQQA2XZPL7$%>M^L4=;QXDKG&1VJW<2D'"_A@3N
M@W"%G:"*,\3+[WZ!37<U1MK9U6,A@:\QDI?0:(7?3ZW.2#=QYH2*C%KEZYQ0
M85'[ -.IU0IUF59S0M5#P #:"94+F<;DK><;_QHP_(B3G/^S;6XQ8"E[><1@
M8'S.<*\YPU=)R# 7EN]Q^=^KY+;<ETM^FHHG<5&8B;Y6Y]RDIFM^5OB,."].
MB'A1DY_A>_3M!<@=KAPD)_ZLSD?T+\KV)*H%K79DM^FQ";[;;'9K-V==RL9U
MD0G*<(C2["I9,"0*1D+A+)HET46RY$(><Q%^MTV%J)?DA9HM8>$!C>/-:\@1
M;1[4.WPB+/""Q1HS0I5C+3\.4#1_8,7==4O2KV=<R5ZM$?LJS8*!3AL8E^T>
M+$D>$G3:T+@H'IH S!@6@T.K@J9'$V13!LIG>P62H*G>T7@]PRX&E9!Y!9<\
MV1LVRRHFE89TBP4M19N00V.!P[._#?B Y@[5E!S%HE5* > GG$GW13K6+M1X
M6:AXTA[H=6.&R3D\RU.NPJ1I!9(L,14TQV=Z^DQ/G^GI,SW-<HHDM@K5,A.F
M3@P]F4M!5XLK-(%H]-1 \728/O6&FXQ(4L/5%4JIH_QZ1K K23$F' 30P%TA
MCQ';N/V6@:Y,UC&CW<_MA+AII\XI:O4.& PXG2Q,#8-[ZMRAK>^VC\OX;$V?
MK6E!HQUM%HM.5.'4\C1AT?%3R\[L*3GC!),WC<(N Z:1O>TNC:QQJ2'2R!3
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
M<>UH#8!F.PI8: SXUO@;]?"L66!<.ZKOO#5?R#:^!V]R,RJOQUB%LKA(]ZX
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
MU)2'!*?-5.)4)IRCIHZ=ROLW/P?IBJ/ZP(&+1/^C#4[2XF,!2_, )5&P25&
MRH<D37M.MOR*M<K[3N#TE?>]5M[?XC1C).071?%$\>>$9"*M8HY9T:Q+1-3%
M[V=/B$62ROL6R_19[MZ2 T'E[IUPN:TG#07][_D7)37NM6/L)F,*<IX)<IX?
M47/&F'@S5Q#^;'L84EG%!=2BUU.VO4HX+^:%J5PD>MRO4'*S*=JU7%*VP"03
MW8HY:Q(:-=# (@1#Y4GWCJ)X5OY%T^P/?/'L/3\]EXBPXAWOH>BO!9PC^U(@
MF [&^?6?=Y*VXV-[0_@<V1UN'HCGW''T*9>43UC[?O"SIV^O]/W%5?J.3[#
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
MS2V6Z0")(H%O]X%M'7S/1W1:D%PL?2OZ\-XL/J>EJ&H$X<6X3@'9I3DHR_N
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
MK/'WN'KBTC!CI+,/VLL1Z1ADGQ4R3'?M[O81EG31,=O8ZOP2%Q_"T9T \DP
M>9Q 6JD##4Y[V.2!^I.(AS1O%NIP3N.X,017?7C8=K *QWRYY0><8(9B;DC-
MHC5)"+_,BWN_8FE%@-!D#1]"]"'$5B'$[NX?'S0\G:"A#XYY'VW?3*/0L%SQ
M1NIZKLVU!%?XR(8G;N1,,V9/W&AK^<SL3NO.ME\#AA]QDN,@P5Q?$_(O$.AR
M+8QS=9*+G*[JU1&:I,'#-EABNF1HLR(AG[H4.IJAVZV'3]MSP/4&? M77/%^
M(MN6QDKUP\%.J7[QU_GLA6WR^@^MW7 P2#[?-4!R^$./#D'OGE2[)WO@<IBC
MLK?CU<89D++LR!' ?SIL(?^!*TM+@<&'/2 HKN4NT-C^H=U1_!B&&M8#C;7[
M_EO)&9><'7:I?5](MCK/TXSKMHRKN'$><081]>/\_Z)[]*W!&]-B)>\*\ZZP
M5JZP/B2<=XJY[Q2#R6.J=<U,G29J0U7C%INZXP+,($W:]M3=%MH$>&GX3)T#
MO.MJ$JZK,?9<:JT1#^C BDB*EDLFFC8)Y8@N#G]IZZ "+SV$ TH3.)_K-;@S
M!;QCNLX235;P!KLWV/LTV#N'\YZL^>[>+.X92E)^U=XL/E :W; [S!Y)B"69
M:!HSQX21-#--:ZY=K"J(N"HTR^:4)-E5PJ&5=S*!31H*CYM'S'10J!]_@NXM
M^)WDW5?NNZ],Y#%M)?)<H9C:E-6^XUQQ=)@R$TQ:N^(+:4\EY;7L"D-YSYGW
MG)V0YRRL  Z>.,1!6('<]!Q?:V]:J\\-X6'K &#O=>O5ZU9WY(KW \Y(D<%<
MZU$#3^H3P)ML5=\<'#:C3] JD7:+0[I,R+]Q=)7,HD>4A/AF8417G05[0FSW
M4L)6%X'&B7T#JL4@];,LN;5;B4E=5W<',ME:D6_#<6AN/"Z;$OSL!!:_C :+
M_9G10&,_9T2[T0Z/$>['J^O"!+'&17Q R&=P=N3B;G<7>;?WZ;B];3B6)NM;
M&]ZQM,&,T(A_GV5CK"G440N=8Y=:RG1M;SKGO36@6DO*3*6SH@%E:HQJ,%FT
MNRV6LN@BB28GB7XQ)-$O)R"N&PU',)5^=?)\*=QK8.K\-F7J=&'0@BGU^Y0I
M9>0 !9/FG?.RNM'O8ST*^5M BIXT08:^<>.X^D$\%20KAS2,07;R,7L1R [!
M]?''@;+^.]E#6'"D0W:QVH]3-)[>Y4V4\-WLP3O#"\IP.>Y>H,79":<9"1M\
MDAVL.'8*7'SCXIS?5"1!;%M(_4\T*5R0M%"==FWRNZ,0](O!3U.A8?6,2W<D
M>K&@#R[XX$*KX$(WLMR'%GQHP8<61A%:&)/UW+FRY!P#=4VV6O6@OV!#1C,4
MC]$785'Y'-J3<?3\L>AH3A,LWDKF/QU&[;N;<Y1[=73T LM@?I >L?%NDE[=
M).\K(7:)(]%0NI 9LR02;:A%=^E*2NX/?]4D]PPG>$%>VK/M%S0S5]MZ@'KA
M7B,'48_GR%;Z8,[$O53MOHIC@+.&>@NH@JID65U<&F8-BPOL(,,F#>1;JH!Z
M)E@T$9+/'6B'7@A.O9V"31X:,YW+1&_RP)@]8R@S_"!+#(2E'D+CDA;>$SM!
MG\D8E";OJ/6.6N^H'86C=K0ORFB:+?WQRM@II*=P]^B%'3F=H$9C?ZG?H_53
MZ]FB_26!CY:%S$S _E+!1T\H$XNKOYSPT9-+SP#O+SU\=!*J>[=W?QGCHR.>
MIM=@Z! B7BQP*![:/#8NN0F) X:Y71F2F)1--;N)$II^;K! 8#N ?:ROUUC?
MQ6YS]H?MEN_,[;.-F84AEP/1+H1_DWQ.0LSX7AUDUYRFI/"9S-;BN8ZZ@%>_
M7^J'%,^ *X36)4,)%VRI^+,6KCI+V0QTFIY.HUAF.U%@R=U:SZAU63 -KEC]
M!;SK7A?VY^?I?(62)2?W3N,2)ZIHZ_$GBO-2LL0Q?1(UY2HT6R\\!GJ\5"T%
M_[TGG"V%8D90K$<$Z&ICP+R!76?9D1*><_"VS[#1HT>[;XR!2I^H4*ER+J0>
MXMW[\'HTD*TP!@R+PM)9]*\\S<1UU"2J@;.'#K+6: ^OG!18$T?5*CXDZT.R
M789DC74_'W7U45<?=1U%U'6\=1Z]*&G.L90)(6%Z0G_QV0F1RMA:["]V.R'J
MJ4V*_B*X$R*3GC7>7RQW3"2SYF#N+]8[!7+J^[![#/F.-39NZ%+P\=W6D6_M
MAF!C.G-M@P=#1\&/,Z[+M*RBI7;"CT#U8U1M36'X=_MJD0U81E%(VS$V/KAN
MI9!V9P?L>OR51L'K)SE@D\R<T4 0[QF*A,Z$R:-P/P!A?#VK4R"-RCXZ.RJM
MJW8[/K267-QG*!:&ZMT*XTS8_L5EV_QTMVKXX+!+'^E63QBDAG"O S1)#/B$
M8>&_/C U%(.C*4'RYL?1X:&Q&<]G!<GO@R*SYXX/C*:J[7@^>*"LCU? 7"6/
M7(12UO2(4O.$@8N"-8[R\="QT+TR/I*EZ UTCAC;+BA[0BP"LU'S"F/9F;J7
M_.2#QP(Y_\<Y_YED1CM3/WM$N.U^5WD+SNE:_+=4-)*H<AZD%]P^HUN\<R;H
MH&_V@;%0")SJ!I@9).^&1@JN,8Q,5V@%^^":P1$TXMWY)Q*+4I6K)$/)4L1E
M*F6@^I,6=H#U)D. ES]W18B7/X_K(,X9WB"RDX]Z2+^8.S;$1->';#OG5F#&
MM^7B[YQLA'&OB6+#*D,A6\8<"D;ZB-</C6I-XSB? ^AS /MJR]*=5\PG")Y.
M@J#2S4CUG7JNT$:=.0ASTKJ2]J;#*XHKT!62V,BOG4J&WPCS:T>;U-*?N^0$
M&R#!O=,GU/7(,*[<8]>CL5&H Y_Z";= TO1SGU /)+.LDQ/N>B2/_IQ0ER.]
M8'$/&:[O2L(D7&_-^.<GPSB B$M_6:_38:.:R#=<780KW]/C(B.G,YQT<%5[
MTJ1K$X>!$Q.NFC\GIA-T; SLP>D'5]PGS8RJ^!B<8'#=_07!QGXOP%(#X82"
MJ^X3(U1W))IT&9MN<BR<+'#5?3HR'9JM"J>2J1X_9BHI$G;&5(55%*.+1XF#
M/!$M5I8)^7<56'W8.6.[K[<R^.HH*JN,X?8U5+W64!GE%AAL9NLJ'V,&\NDU
M-M-K.H?S\]%N\]M!D7?<,#KX><*P_S(FV+D:PS#B%M0M3O-81$7$&\9S1BB;
M8_Z_T7&+!SU$C9;VJ5YFHM$G=9U.4I?O^C;JK)1-(=SX]UDV1M,,>*4ZQRDF
M1&EQA?67BU+RUT4R2L,?J/18-_Q_#U 8YNL\%AZ3@!:1:/'4)<,KG*2BS6HL
M8K!'US!HO*%#P XT]AP%-O'Q#H2!' AV-AGF6+#)<)8,M-D!P")1YOP8O-+;
M+!+6WG-YFN!=ONA<_+E(("WF\+LH8S@CK*"5B'$+G_3-@DOB!MNMYZ\.5:$(
M1*L;XNR1':;MP(R&I$QE3%>7,7WZ T=+?%X"SN'\P&66^/-LD6$FP=5L%<O5
MB(P\%N#L\NWN^>>EG6H@4P;"X2KAQR871^:6I%\EO8(@4ZSB4/54O?A6NBHN
MRZ10:<TD9(KEQR+*GJ:B7>#=$]I(H9</M@IW)7L+*?M<*DLQ@$ZSBLOMLTM#
M'$S)*9 /'AANJ0Q2#?=Q#5\VW,J7;$D;]C[FT_$Q*Z0MU95NKM %I(M1$_W3
M%0JI7?.0F]P5]S/\'.EI:*[01\TM<.O'%9KHRABX;=5?4&+<%(+8;Z[0QD9T
M>"KOZHPI.CS^I%W;OF!7Y#60NFT<K/T)I]&6-[9TOEN/,+\+4KPL?B;)@K)U
M^3KG\;\9+@WNC 8<H8#NGR81%KGXC;#!4;)-=W]*EKLUC2/-=J&R%W$> B\?
M>>XU\GR1++D\X'I:=)=A',\YRZ0YPW/.$+6N;;U)'0#(%P]1FETE"X:$UAEF
M_$NBAO@ PS85XJP97,,E>HWKVSU*L/C^$,>[C4,[9=F1,YO_=#A6_(>_SCE<
M-"91^=2JV-^:TZ4>. "<M8(),M1N"%S65?CY'ZW"=4[9AHI'NS_1Y*YD/FF4
M3CG><JB:7]LAV;4HFZTIR\B_BQ\;(]7*&58Q*!JKS!GE=DH#Q#4C[/8<W@FG
M:KL5G8?EH^T&HM&V .&>SL*_<V[PZ7:%UE_ <I#W$2<Y%@F_.]?]%Y*MSO,T
MXZ8'XQ9(G$=\*X1XX?\7-:?6M%C);JBU9"II++MVS# !X;,\Y3I3FN[.@B1W
M #3'A^%]&+Y5&-ZRTNK#\>Z'XP$V =71QZ=.#SV!3D'WEG,T>17U@%J64W?(
MPTZ+EC(]=9(8A,34.I)S1%%)$1-7HW/Q9!"16CDXITXR/?D#=/9,G2@^+V'<
M>0DC#IFW=IPX=U%)R=7HRW1.A$C) '9".R=6I&0Q=;>"J:3]",(8J507++*8
M2A+NM0<<'?Q+A7N(R[SPZXK&G-9I@/E>9?OGO-7)(&;KVDCG: .904)&3\7$
MTJB-]GR[L=,H*OJ7H'B.2'25G*,-R5 LQP@RQS(6_^):P4[ U8-WM^)"X@%Q
M*7/\^-*MX*R49/@.LT<2XK*QRVW9Q40,$*\/-'F\;7W6<M1ZO>8FB3A]BFAU
MPSA?%'Z"1>$7A8 6+$X35111.M:7LI](*?LGG!WR>!O K1UC-T.CX<I^D08O
M,MT/M\$N*WDN; ^N)6<9(P]Y)LS^>SHO=-6F%(^>/C=4)Q99[O:S5/AG"?#\
M'HQ1FI(%"7=VG$#/A'#M/^3[.YCW24 "D@O$$I(LY;E-\L&^+X7K?2F$EIS>
MY!FW 1/AU&O*,7DY;J!>T.;P#M/_>>_^>*%[@=*F9'-\VA0$WIO%W9$WHZ3G
M["$MC \5"I"Y+B2#]0 G)]M5FN8X>I\S?O9*([L\DL7_GKTTRQN1,5YI#!@7
MOH0N$)8L-)2"64!ZBS<YX_88AXEK<.7%5K-3,F2!2XP;39FO2F.%09%\)N=D
MN#P;.)0:T )BD"(P\?@NZ.XZD4Q6>!I IQUR1DX-WR%GA!UR1LXS(^B0,W*N
M\1UR.DG#4AN^KAPI&,K/TA>ET3]7#I(V731BX\X=*"B-(+Y>Y[*SP QDEB[B
MRH$;K//H5/+7H'P$"+*[(H!&T)5U*E)HA*GG(W\P31EQZD_RCITR2B^<*P(&
M1@])LDH/<F3\#26MY;(X=\<;D;6K3!<P-7]Q@9JM0WM@<OWJT-'N(#X(IMMO
M+K"9W4QQ,&U_=XTG3<.X8(J].SF*U8>$X5JOH4$PTA=NE0E=<,(8V@-C)8PR
MPFVQD$[K823V0C4:R?._78%EKROS((CYMLSC?A"XJ]VNL!T74':+' \ 2DUH
M:#6JQB)#X;DS83_A[)EI6]JM4$1U5K%<:IEF-XL/E$8IU[TJ!3^]HX>;^%7-
MI6J"+[[TQ9>^^-)B\:5PO=VC;Q??A,6.*V': '[#Z*'R;7=9/Q4TC4#7CO(U
MKF[5N'ZBR;[K; F/G"WDDX*W@V#2V-2F;(Y4V,\<3H91BM_C\K\-^+59RG+9
MWW-=]B;G*@(@BT1:U-A^R4G00%$@V<6BDZ"#HC2WBT5]]WY?X.EN@:?OBS\:
ME\R)E!.==&/\461%CIPV(\B*'#F%.E%S:3\*HRLTAE0[=F5LN),#/PZ^=+G.
M8)@JL*D0Q:!813N:Y%QRL,T*W9$ST@@J=*?"-09'33^>Z0K5!JUKGFR-3W<O
M;$PE@7Z$94YCS$J&IA/T=RWQXYGB,:8SZH6W>I"OXT\?AD:SG1.P4JIT404V
M%3$K)82]YWN<*$1J'V_NH1)IQ/22IJ5 4LVKOXC_$44W_#?_/U!+ P04
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
M*Q'!WR<Z=O?V#YHNR(H#?M"IMIC;JAZPW5:USCM=C[.=6J.S0Z(#WDYD%80
MMRP!:>C.@! ]M,CA 2YR@JTJFJ?@6L3,V'+I4[YQG]HR.$ C@L\X+^0PHND8
MH(X<FNIRV)>HF5 =5<V@A.V'R-O2/^.,A5^V(H%I+9I<,/Y0^AR%B50?:=K-
MH5:E!)]IWN.1OI93D[WY)#S*X C8,JV4EXZV.3[[K3@<8/SF(_-5\>F*&,VG
MR+CI1]D*S7W9;^DRO>Q2W>M>_,5\-B]Y7X!%"ANT!@@P: V8IP^ 5A/)C_2
MED/XS=QO?C*?\?Y20.N0".B&9FT)H*OFK\1'V:+2!^E?G@HPE<H?!YG&%_'0
M8C!KX6RB1G.Y8*87];TP.P>O>3CTA4MMS^.PRPV[.!0Q'SP9?M,ZX=\>E&/,
M32M\>>:>@$U)I<:2P:8QO^!K/"]L2NIVE@PV]?EA4W\VI9"VYIFW>.(.-G&4
MNY2BI2P.Y8+Z8^)^_/(3#\(!%KQ,/G9>&5MXQ/OBZN<4)<\6S'UA4M(@45DL
M]=&#ESV@K#5K )-_H):9#_:7;6?K**V#G+&OG]^7OBJ%;[JBI36 YI"1%NFO
MA/1E$OX6Z:^$]%?3:O.(]\7#^DN*]L<VE"'_L9UMAHBWB'\]Q"^5F+>(?SW$
MKXZHGY(\6VF4E^_)BG>+[$T2Z1;9JRG&Q7(%= OYA,(>GQ@;G]CC\@1F<WML
M/.\>:YI3TSIL[(J+1UAQ$@9I'79N',]R<^FCV\C8=&(_S\FA.635W@)9;4_E
M_YE_R81W%ARSH8B9OQ:(>W1OZX3$*QXSC/R8%N.UP%[YIM8);7-4[JT%)N?>
MYTHA=[DT_?/M<9IY;I7^&IGEBR'9&@L;C'QK9&P4NJUQ\H+&R?(2Q8+I\W6Q
M#EXLW6[MDR4FSY6T:U:&5*UE]4)DNUH6V<K0ZR;;A"\D7U?=EEP9VK76[/-4
M":V+/?N"5476HEUJ$EU)FW:%R-5:M2]&NJMEUZX0S6ZR9?MB<G;5;=L5HM\-
MM6Z%3<.^=.U5_7E+!&PZ]2UJK]X$B:MEK"R-H?#6:%MYM;W,*O/%D;M<M5?/
MM\=I?3!6Z;^,.?=V_2]/1K(U%C88^=;(V"AT6^/DM?SYI2(*6WNU&DG6#;5/
M;.W5ZI&JM:QL[=4JT>LFVX2V]FJU:==:L\\SFFM=[-D52JQNJ$5K:Z]6DURM
M56MKKU:-9C?9LK6U5ZM/O]:Z_=[)A)MEUSYQN)VU:)>4+-?8EGUC$K56[ N0
MZSK:KV],I]9R?59YNADVZUO+ULVT5H4M&GSI3H%G'JEKB__>HE/@39"X6J;)
MTA@';XVVE5?8RZPR7P2YTXX.L0KQ94R=MSLRY,E(MHIT@Y%O%?!&H=LJ[M?R
M=9>**&P5_6J4RVVH?6*KZ%>/5*UE9:OH5XE>-]DFM%7TJTV[UII]GI/-U\6>
M7:$2N0VU:&T5_6J2J[5J;17]JM'L)ENVMHI^]>G76K?SD[2MHG_S,CIKT=HJ
M^B4G46O%VBKZ5:!3:[G:*OI5H]D-M5:%+1I\Z2KZ,61];R6O+?Y[BRKZ-T'B
M:IDF2V,<O#7:5EYA+[/*?#;D)H%0F+U,)$\Q,> L@L]'^A'PI[G?_&(^X_V3
M#_L/9W+B84DL#_\SUW.F4MRE#&$_\0B3UG$[\! S0P3:QU&:]__" N\,4!#>
M$?(T9_UQA2% NN"K",0@&2PW\<VQTXP$R[>\N-$8R?@PA=?6$7XL &TI*?F%
MB88]6*)Y,M'D@;9^1/,Q$;"?H+<!$J:X52M9GH-(UDZBO"21K+<D^0+6$.^'
M_L89+M/W;67,LY//V@F<5R.?]98^7YG;%P&7H_SO&R!]'MFWE3[/3CYK)WU>
MC7Q65_JLB/18+YY=$9Y;+TK_R$!DN/RZSWG\)7099F9,&%PFW/LB6$?XL,#E
M1$;JPDW9QM91<#]\."S?S&I@JF$QM?R#?.;C*<JS? F#7LSEP&Q1\"7/#,[
MV..;6A,>LYA;4IZK5^NU:FWGCX])!#9M%+5=L&@CD2+NDLG;D^!.R## U3(_
MM7B_^.Z28Z]\2QIY<VSLA3"H0?X,&/3R&+3(?#5D%@K7QM#Y6.':V*4O,,78
M8OX5,?]V\ZN?E^?_. 6G-^9?Q!WWSN"2H"<Z/F]'$8^CCZ.O[,]0'OLLTG60
M212' RZON$_Z,.J+X;*K\1>CH+F7\ 0(YTHTIX-Z#:79&]+TC60>'\!#HW;@
MT8=S-EAZXW1%J?I18%NZ?DZZOH1UIYDQ2\?/2\<%X%JZ?4ZZ_<C<6S_L6;I]
M3KJE914@NX9$6]*29EVB5W2)WJX9L9YAOFXQ_Q9AD+DQ7W^9_KW%Z[V7%=LO
M6=>]E/D#B\+70^$+)>^>7AN]%JB;LP9Z9;G.HFSEN.R1*MFUP-\B5< KRW\6
MF6O$F8]4D*X%,A>ID%U9SK3(7"/.3+_[%GA<GHH ZW](-JT!1BE&,&N'Z\>@
M%J?KQZ?'(<W2<C$ =A; '3W)HW6RAQ[;X/JQJ$7GRG!G.AWG,X=-L&%?N,Q7
MAM"_EPU5V%LR=;U;1VZ8!+$<'7[]]VIQE$7!FW/!FE?,+7.YVLOW=*U]Z=AR
MUVTM%X)7HH9JN0J87EX#6O&[#.+WF77K(LBUXG?-$6S%[XHCD)HDQZ]:0W0^
MLL]506YMOUIK_/&)=^)L4GT['=PO!J=)@/GR=D]R<N=$ERTW(B>WH@.FLS;T
M8A@C$#^W.6LQMFKVJ\78"DC%:3VV"R#OCW\Q*1BH!3S>@^ZXYFXBN7=QQV4@
M>OU8)6W@9CH Y.+T:M.P/O>KQT&I7SPG0)^3ZI:D&1AD5!T5=^Y/2Z*61"=)
M5%/'/"0Z=NDSE.@O2I>;0U[?;:G4G]&VI+ZL1N./+R+@%]UC(%L1GS*79DH1
MWG[GOA^=,MD+/[+@]KR]W-B:M@V-L_+-O!"F-&B?RT(I:7FS2%NSUC;%BY8M
M7[J%K<"8,]M6&\^I'XEQ2Q!ZQ>]"_PXT2?$W;;2M"1V444!V8M8C /A^6^W-
M2?#EHPV6JC::JIXY(E)B;[PT@4V;)[UV/NO:4.S,URX\>GOUG? E.J[Y-1DW
M/^/;,NY:,>Y<X]LMXWZO=S!UNK(I15^=#K09DY6G;VBU+&^+L16P:A<ZST%P
MK,-:R['F"^QT3;C2XGCEY]G/>8;$ZJ.Q4'>VH@R9%3!)<0=[PW/334;M2D2W
MA+!/O,LE&'YXOCJ AT" /7?+C;C'MJ1Y\/&-;0P&_SAE0OZ+^0G_.$K__!6
MSZ3;'WWA=USUMJ6_G07#)([HA_JF$L'<2Y@/N)DX>03*EB+GH,B&I<A7H,B&
MI<BY*;)I*?(5*+*Y=A1Y&DHN>L')@]O'<!]\O&?26V5B2O'WR,XV!($;:W1]
M%PU8JVLI"7*E;:[5(<CU,[I>BB!7VN1:'8)</YN+:L=Y%%-*\YX-UX&.RO>T
M]DC;> OKB7BWMM62$>%:6%7+3(3K9T\]/Q&NA26US$2XDC;4^JK6C55NZZNH
M-E95K*_8WSC!V["%&J]=J/%"H[MLH<8:)R%?5O.O%T4NN=6P)A3YLH;+>E'D
MDAL]:T*1+VMWO05%VD*--4;@QAI=JY.&7#^KRQ9JK#1!KI_190LU5IH@U\_F
MLH4::X.TC;>PECD]N7ZVE2W46#DB7#][RA9JK!P1KJ0-M;ZJ=6.5V_HJJHU5
M%>LK]C=.\'Y_V\NOW.N)H/>)1W!)-C;%?.9>.]*79$]>;B)8ABA*.52SM\\!
MWJ6L%$H"H:CON/TIQ?^ LRB1_$A$8:M1WSN$W\S]YB?S&>]_$6JN;R@Y4Q[V
M49!88IY)S"??KJ82,_SVZL3\."V?AX&70GR5:7<Y1'$).)>26E]16JX-A2V#
M=%Q9^OK^3-VF*>/E$&AOIXZ7)U5LS<%-- >7A_XV1+\NA\![/0W[%M&;FSZO
M'[3JZU2!0%+JT7VMAH7T_?@KO37ZS$3P)8RBCR--^E?<)[J/^F)(#SUF4?_4
M#^_U[QM*#-^U@ME0SB1,*;A7@T;G4F*61BV-OJD>K+6JM>9,&FT<[%H2G4&B
M4V&T612J2>JU-;VE4$NAKZ[GIYWV]AI^ZQ]G@1L.^'4,7^'S"V=O7#-_V0_<
M6#?_=NZ7/H*W[,TY!#XG%[S].6N>,HU3EGG-4(]E&<LRW\<RC?E9IO&\+%//
M6*9N6<:RS,JP3'U^EJF_^#&\;\XRJW<<I>6@,@YZQ:,XK<UFN<ERDS7G+#=9
M;EIJ;EH=2V]*I/B9^,@\_>0!9W/Q=6"AEPH;+Q_SC.^X@$1KUEG6L:RS7*RS
M.C:<91W+.DO%.DMEL*U^Q>X;5\LNKT%A4;NV"L^B=FT%\A5W?19% %ZEJ6Y&
M0T[(S7[@WDUXSN,5R -.VXR.ECRVI364T8MC>Z6LS"<A?0,<?EV67CNH-AHO
MC;,Y %(H:Z9%I0_Z[M)[>%RM\<=UTHF$)Y@<(3]?=*_CT%6^6#N.87=,WO+X
MHMN%QR][A>?4K6ABGKJAYR3A<8S5G@UC0.3 #TM&E7I1S[A'M-V6;H^-G"!Z
M@6+8ZSZ3_(H/$^GV6<0O9=B3;* *B$I_6G)&G+H=S8F/;6J]],ET6R(6DJ(<
M>"9):DE\XET1X)DE02Q%)UF-4\O*]Y(=PS)]1VN(:W Z:M7:;MX!G(+K2]!$
M2<36#^7S;.P%_4."_^OZAV(.UKY4,,3O(@V:CSR /Y:\@& :JLWOL_;U0L;5
M"W6B6N2]!O)>:%3!1P;[</EUG_-BXN<"#'_Y)0QZX+\.O@C6$;Z(A8E>3$/Z
M>1C\E3"?G-_LDFMV!XY#M/PR>AHTM)1^'";?G\QY5$7,"=K5DAV6_"SYO:[T
MF^9=/)8$/PZC^**[ O'HN;+!$[M90Y>B)%UH$;SF24.+X#5/'3[:-,A]'S31
M9[#$)?/;@=?V!B(042RI'DBG7]8!^4_:J17MEC!>ES!61B58PGA=PG@355)P
M-MO8H).K0   "#?F'B4]OP4BC@ VEUQV0SD@/XR2H7C3DE-!86-I&<*3M[>R
MOIM%[.LA]NVM &%1_^8\_4*#5XO8S.\+L]^KA;$L7U"ZBZ5'# G;6B9L:Q9'
MSR8W:_/+S=J+&\D6H2MJW$YSARU"5]F-G6G?3@'%'U<XAH"N^ K>W2!9\HJW
M9T+TS/=%,CY,0;-UA!\+\%DOX_C92(@]6!)ZC(3R\%E#$IJI5JRK]6I>]E*%
M5"T5O!$5+%4JKD@%$T#XXT;$V$YR%GCB3G@)4R=0?Q*2NW$H5X\0YD?S7,JD
M%#Q*L11AM(F:Q5+3RE'3$FLH2TTK1TUOEBFL[^&;@82.PP3[=H?PXM$Y&RA*
M^A+><_F[\'WX(H[Y9QDF2WIJ&^*J; N:8*9OY&6"T@:LSQ245H\CGD\1=A+<
M"1D&N#CF7P&H/4&)\&L1:X\WE+'/ N]7)CNAO$[@G=TD\/#WY<2AX?A9.S,-
M1+/V]U+<:K Q![>.T\%S<:M%_FLB_T7XFO#9JM9VJ\W:'WBX#[; B:#' U?P
MZ"-(L#B1H)6RKT<EF*6KF"_Y=9A(ET<W,HEBSE$4NL)?;E3/O^E2I,^S]1>B
M HVVY\X%4[?#<3@8B!A7%:DZ7C84P IMSQ-TXM-RX[1L"_G#J<KVLAIYX;*&
M?%.$]IEC:_JP+UQM6G^[7C8$H8$T=;U;1R[:3G)T^.UZ,_QOB[J5=78MZI;>
MLWRZP#QNKRCJCMN;+C MZE968%K4+;G !#_(A95+<H%QKO/'T4=PBOHXGTS%
M>K$C[HK?\2#AYUP#H>RV-#I\#%Y2.$ C?>P:?>]7]F<HS47*!;D(^/5P:+Y;
M;@=D%L3&SFP;!]WB@>1'%C!9KS$#"=\7SI[$H.FF+\'C9F@ORT>6CU:4CY;*
ME+!\9/EH1?EHT^VZU*K^F$0BX%%TK2"I6.I2<I=%\5G0E0S/$7$Q#H]'G@4]
MN)A+[EV/(KA_R<//&\YMZ>8>PW5ZKMV3,&[M1,N7EB\WB"\WW>ZT?&GY<AGY
M<JGLV!LQ$$'OHGLC61!UN;SH?@Y#[T)><WDG7,5HYC> T,4=EW#+DI<@S;&I
MC#:G[FXS#"9+ *]/ $NEF2T!O#X!K+(*:,>7H0A C:XO%91LT2H#2PI6+5A2
M>"52>+O!@]GQ)N0I7O$!$P' *]<_?-'Q18]<.!S#B)W&!J37\&W492[5^YLU
MZZ;KYWS<MA?B<ZJPWI:"U-L06PR>KC>=TIYWT[#%EWFPAN91!LV?W[_LFU*^
MR0%P>:K%5Y(/=BP?/",?[%@^>-*A.^THXO&2ATJGGU12Z'W);^4Y]?M;'TQC
M4?04%+W6X2TW[*&=Q/U0PJ)43S]\&<7"/5:%LCJ7L6)STLKWEF&Q=)/?5Z-B
MQZ4M2E"K,#5M"0AJ?8>GB3FHB!)L[<!#J>S_,Y$B\@39-:M--S.VM?3Z_XFR
M8,9VUTW-+(I=JW!>B<C60?6\*I&MKQ)Z7B+;-&):293/8W><AI*+7E"PZU85
MN65[63<+HVR/ZV96/ F/UI9X27):!P/BY<EI?:T&4=HF?_)7 FL^#@?#,$@+
M?MNNFPP2'R[Q/O&N"+CWD0?P!QT<';6]/Y.()AXM-S$]NL>,IIZVV1=20O7G
M#7,;-'^"^^[H%,"S .MX<6E82YP7&"</;A^9 #[BD-'QBO!9!/*9B0"'FYWS
M^)A%_5,_O/^5>SU^R>324\ACX)D0.J5P6ESX+$ZE\T!\C<CT#.><\BB^@KU?
MW[.A)=!Q BV'D"7-[S'C'YL*9'7FV^G,):D"+"$/JVNMKMU4\K8ZVNKHY25I
M8;7XDFGQ%ZD>$E8;6VV\3F1JM:K5JDM1?VEUYA+HS+?/($PC#ZMKK:[=5/*V
M.MKJZ.4E:6&U^))I\9?O/K/:V&KC52=3JU6M5EV*TLTK[OHLB@"EJL/R(HDO
MNKG-FR/@AI+W$92(-"QATPWLB]W\5&I?87W]/?#-J/'[ /T63+.9L8.2M*)E
M,,M@Z\9@2S6<RC*89;!U8["EF@FYN+^]$JRY_J[4R_KZFRH?-B_8^OR%H59
M6 %A!<3:F^A60%@!807$<@F(U7$QIN1*K&A8"M'P4GD:*Q2L6V&%@A4*5BB\
MM5!8'5?""@4K%*Q0V#SWX0T9?%E9<JF98JW,5$M\FT5\2V4.6>+;+.);*K5[
M' 91Z N/ '2&IR4365W H^&KH&?.71XWA4O/X,Z=O!QS[E^"I1@EDE^*X9+2
M&TY3+(= [H22<E \H[7XR!G7,R&Z&?K94JFETN57Y)9*+95NF,8'(+HLBL^"
MKF08-7)C@&@[\'*P'D7X#DNS"]'L$^%KK0%+P9:"-\Q2L!2\&12\PE;$)M#<
M!JM8B]ZUUC\6O>LAG(]#.0P!*OP\##185A?!4S>ST0+:HGCMA;1%\>H):F%3
M;BOC[KUJF/CE1EC9U)FEMM<;%6Z3"RM(>V\8V%HQN6<I<1,H<2EDXB;0SAH(
M#(NFY>(FZQ6O#$=95"T/5QE4_8OY"6VQ[?OA/0M<'H'ZO>(1EW<\NAD-5;5Y
M^NMI*(]!*XL8FY>6$WL&0_-M+=>=]<@>EQZITS("%K^OCM^WSQT(2P'+PN$O
MI&'G1.KD91?=3[S+)6S^ACVTHX@OJUV[*(Z?L.5U%^H6^Z^%_=44^98^WD Z
M/+-"J%LMOP1:OOZ\(K^D[,/B]VWM^+<[&OR)'&Z%^AL(]:7A?XO]-S'YWDXZ
MU*Q^6 +]7WM>_B^I";3X?5O]_W;5@T_D<*L!WD#_+PW_6^R_B?Y_!>D@'@XE
M]VFC45\,'5\$MU>A7T0/WK0=RM[[1JW6?"_AY_=XW9;#I"L?OUA?\;[+W+C:
M#<,X"&.^Y<3A%>]&OVQU#W8[+O=<K]IM<:_:\F##K+7O5?E>B[7JC;V#/=;:
M<KHR'*@;W'IM;W]OI]%H *&]'UO]$NS':]1W&GL>H&U_?[_:JN\WJP>-@VYU
MSV.M;J?>:-9WNR7[:;;VG/3/@_3/G7KV9S/[<V<Y]\X;NZQ9.]BO[NS7=JNM
MVLY^=;_K[E19@^_4#IK=@QVO;._UW727]=TE12MO[.]W/*]5K75XL]K:!7O[
M8']OM\I9%W;<:1S4]_?*T)K'6FLYM[9_<'#0\CQP(+I-7FUU]EM55M\%U=-L
M=?=V/,^M[1^4<F!M.?>SN[=_T'2!Y0[X0:?:8FZK>L!V6]4Z[W0]SG9JC<Y.
MR7YJS115M68K^[.4U_0W49A(T".P:?S<Y\PCJ>^)NR/G?QSG9_P#_NO\_6\
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
MVG ^XR%A&"*V4>$%IQG4P/BS56MO(1KL8,)QT3!S,F$F#XYSIP]:UE^,]>O
M^K;F["U8?],GF3RU(:8^L^]/=ZJ,G(O[ ,R$OAC2R2_Z&*V//.!@/V >6?U.
M9D16!:O+6:?VR5@)LYB$:5@)\T82QLY/&1<A,R,H1EB0',!X,@B1J" 9;B0#
MDT,%FRNZH$7Y*LX9B"\P2#QN79&%I443I,6NE19O("WLZ)5Q:3%S]LJE%($K
MAF!19!5LSBGGNM:5RSOAVH*5145!:XE%@8U;;U;<VJ:DRE-2,T5D:4KJ7S8C
M93E[23A[(VV]31_&,FGKS1RW<J+^&NM(R XFO';[W$M\:^XM:N[M++&YM][2
MP,Y)&9<&,P>EG,)33'9?'QW]FW.=#."I=J;^@@)@%P3 P0P! '^F!S[#WWA6
M]>L>C^V).[.+R\\??TOIY*D'6&^IYXT]\/3F*GUBF2F>>XMY0.$)_6Y5AO?I
M3^._X2G>CH*\H<OL@'D%WO1L^>*'PM_]5 9?MC^?5#]>G;1_J[9/;TZN#AWF
MW[-1],%1IU$C=02\L.X/3I\K*#2&#Q_0L0KALK_5Z']P'W-O>S), J]:_&GK
M?2G$?OU4#C&$_?/ Z^;B^(L(;M.W>"(:^@Q82 2^"'BUXX?N;9'\Z>49B#/A
M H1?/#O]7L-"!"(6R$6*/O&*\2]3ABM^_2Q2XH8.?<=D&?QD3@)Z DWD_RR7
M-Q.<.%/*Y(7'!'3'&3-; **0EIX2=NZWTK6-K6P>$9%;CF;-@M  'Q=P+KQ?
MMO*G7<<BQE?GO])DL47.\''[V\W9Q7G[ZC_.]4W[YN3KR?F-<W7RN7WUZ>S\
MLW-Z<?4[_%G]<G'Q&WY.K[E.CS2?NL7GEH,O <@_DR@6W5'QM28?$V5C!.!3
MW!>1TPZ"!"SP*SX,98QMPZ4Z&<<CQGWNC#B3#N9F/.<3=_F@PZ4^9*!><1JU
M1M-YA_<T:A_H0]FSZ/?ZAY\J3DC=27&?!<XPD=P?.;"@.)2HU6%]:=-2Q6&2
M._JY77U>N:_/*\^VI!\,T@HV%M!R!YP%>!&P)'Z\E.(.2]VR68S.%_A/C]X"
M(, W.FTWQNOK!P<[.OY,62I];DK]Q#PL]Y"3!Y>:L[-[FRU8=.2P@8*5 4K^
MP@P.U(2!6^RP""Z&I<"3)7I#_ $;,IC.DG' +$"$ZX394(9_ZG8-A]%TF#"1
M3D>?.%H!SI^83-7AON!=?3^(YV0P5/</F >O'^7NV79^!]T3.5'B]G$K>@=J
M15'% %M_C4-L,(2/BQO[2: H]":^!N$?3'Q)Z[N;?$;$^>W$EQDXQGX -'*7
M19.KC/IAXGOCW[J%+Q$RQ%T*,(!-@L ] 0-_C 1P*7+!PU!RFO(5$?+4/@%_
M<0@R"R (7*CNG4ZRV\Y-GT<\SY?XJ"",G5["<!(I9D%@#=TDQG:>(9?$%8&K
MA@6)X X/H -#,;I5JTO@)^)U(LR4LCR!19^)'^/J8-W8 $0OETCT' C"C5$,
M !6YX4!G7J0>2C9@(WH ,"O"&V#C Z]V93AP[O$%($4T,)!ZI6/@SW&!LT!
M;*)?A3ME!'T<PP\?Q "E$J:#NNI@3:#*O@ =*^BM^#-@ )5N'NBP//U6IHM?
MXWX(4"9H$+8=T![PA=ZTV2<\8\HVU?V&X#SDE 1%J.LG'C]\9:5!YKJV#'_9
MJFTY:%\-F8=M7NGG:,A<\[G,MBX4"M7 A%1VUL^97Y /$I0Y\L8PR[EDY@W[
M4^*1TZY<U-H9-W;F@"0P^>Z'"<]H8F%@7(0OO+!9.MO-YGUX?$ "&_X9J %@
M0XDI45++*/1!%7@)B.7QG>5=/HO-M\2FQI S$ \62<N*I(X@(8IZ0=QA!21R
M',E99Q"":@!\:*M @@8!3:NKFRQ&EQ6CH+"U_>_"SV#92(5/9>!X8&X"5L!2
MLAA<5@QJP8D.6F1R0Q9;RXLMH5T3=L? 3>H(7RA37K+[U*RV"%Q:!/('L"M)
MP8&S#*Y7C^*9.29T&7H6\<BB<%E1B($(&9!E LYM+#&T,PQ]X8ZT5]]+K-VR
MY#C,.7\QW-GM:H,EH; .Q3U4I%!%2-2O_"'[6^HZ>_@=K%F:!YE8?"\MOKD;
M!N% N+GXW<@$:4-7$"ICB7%4)(D!<V68WN*:DP1@12HDA2;O,,0,E*#PEJOB
ME/ASUS<A=7@XAK$I$F=BVOT0H\<]'66PY+*LY$(BGD>Q0YW[&/TE?.:DAHX3
M%2XLT >B6PD'E T81#(>4E& Z-B3C32M"FT@EHS=78B*(X&$@Z'/8Y6LD &E
MV3 +CGW@A/;W@&;F_I6(2$D4)"45 (%']61X7\@Q62)8$2+@W2YF"N\PQXJH
M[Y'<N 09X9P$=T*& <V2]^FPNB'^75$(^/+E.$U>XN7?KMLF;ZF"8Y3"':,8
M>&&>2M2%Z:DV2JVY?4ST.1'L@.)JV#CL#8 :\0"^]#",]"Y8FAN"&(M& 8=M
M<O,45W+R2N"5W;2:5.=S+'4N*W4J<E3)5=-LWI$<B +?@T(J ?'D &$FD<EV
MNZ,.J"9S-3:,H6"S2%Y:).O0*_'I +OZ"-U]S$9+/C0G9%K\+2O^4L^QZWS;
MOMX&/_3!D:I$QL>#4I4C88Q'F1U@EHEZB]QE12[S^%\)<RDRB^@3091(*BMQ
M<0P8ZW&+NV7%782'_XS0V0/C'/[M^QR]/HNP9468SSJY>+I%U)LAJN@B!;V0
M8EWH)>$Q6FX8='WAJMI8,%-85OSX[58"LW%]QK=DW*\4@B1P:P0"%2>66/0N
M+1]JPP2#HS+L^'P 7J0JFH47)E@L",X%5@MDOFH6+^L*B:OA#T,_C+)@J^I:
MO.<,'6%%%%T_#'6MJ'*/ P8/!K_4$Q%614I+(LLA 4PZ&M%WBY$*%3I5]I".
MCP%GX^DY#EI%A1 #IEJ,?S,6;9% %![&['7I</ITB_=E%0TY9V<(&.4#X2*S
M#X7Y$\/?Q,S#I -*PNESYL=]!S M>R#VL80(2<$B>$D1K)"GZN0]=3ZW*D_'
ML1H*MF?J/]0LT?C@Y#I[V]NF5P /WG5.55FYZ1B@W)F(G*D=+THK4!TY; LE
M!/U7BQJULNN38Q O/D@4DWZA7.[V5(+*M7#F.SC?LG'IL>:YA1J*"_UJ!JU;
M1]<S.@JB(4A<)PS 26*126UZE.8,G/N^@+OAFQ$U1F#CBU+;]W!-2*T7"0@
M,-5OT=X##QGX77<( >:2(3T(?YBZ J4#NCYW8X=.5E$%HT*ZR0 N0B/18=V8
MR]S"9M'0MG/6U4O42\!'AA)GYL&VZ.,@A U-APL:+'<<&ZQRQDGDJ*88VC@H
M.^IH4)T2\+9[X?L (H2$IW+,H/O4^Z/< LA4PK8K# -A?Q!N3'+, \BQ[T--
M[X_TQ*1$]N06Q&<G\V=N4RX^CSJWRQY8UK)<SCV&\<9;!K4VJ2M!D365OFG+
M\7=V'#_2<)S_2?<9.[KON!S"3VX^7NG>XYG=QLO:]HNCL>IIQZ_^5&CVO6Q?
MW12'8KU!%^^B#5G?H3OSU%S:N35IBSTZC(4>\WK]R!F*:61%BF+]J8!BM,,*
M**YOIS@NMSH?'2GW^CO]J//@):M>:G/N!:#Q+?"INAA-@'L1H0WL85,-]RID
M"X$L&*2MQO@%GDT MM9XR^X]'_\&+.E""Z_^.DFM=#3V$FWSSS#7E?FF:E[.
MP0KOWV,%U:48INLA=S#@)GN"X;_0%Q[% J.D$PEP_[&M!*^#AV!#JC)#P04
M:RI03:_W_=#GV\[O8&=Q:B!VS6$L>I5<#<;">R\D[V&Y9^#4#W9WMU]9PKTB
MMUS<X;Q7?K_&TQBFT)1 FO Y\U0%IHE(8LL2F/X8JZJF5;U!5[(HEHFKVL)U
M41XX"4%JJ2/A=;@I]?-A ?C&\>?R -;%@?Q0>G+NJQ<Y0U@86D9.-(*O!Q07
MHV4[[0'' 0T5= ]R#W/0KQBHF\F;PDBG^AASMQ^ 1=@;9=6#3A^,INI?":.8
MV5#UBVO'ER8_N"JJCO4]/'?;,!D,'5]T8W(8*,>LUPT/H,@N++P"MJBLWDLV
M'.:?XHY\;'B6^AIR@8*T]-4 *,0&<'+#,194!(/S9RC(D>J*&(-_NC0%71NP
MYH F5(4=/)5Z^Z^QE(GW4!6!*SH,5864FA PX#RF@CI<="G8QG ,2/(B@CI
MXTZ DP8BAT:@5-78" ,D*M5DJ.^X(VG8!&Q$E8-&RK55LS!4-5?%^<P#?L<4
M*:HCP@D9%>>2(S6'M\ E>ZT/:JM32!=A!!N^ %GH84<=-MMS-D"2!H , %IJ
MUQ'K\GA4<33B*WJ(01#>*0?[GIK[/3X Q,8Z5J\$+$#@COF)FH; ])AH%7*M
MZ'=0V9JJ:X9WWX?REF0K"OX^<!6\4\9$Z$#+_P(O/$SN,&3_.XOZ\)[8%$7W
MV1UWZDTE&XJ) ?@+WTCE9ZX,09,5>&)=I3*BM90F4Y)#& ,Y>DX/B$D2N6/I
M*2 1_E:HI4"ZF<< FL],3RA4%6NU)Z33$1X-9.AR#Q]840$"A:%!$@@U+YSI
MV&L%&^)QM(L_JH;WR&)JO2[1)UT 3.'Q.^YC<D?Q"+%M5[AFD$I$Y*)'D-"R
M(N9SO3E0ZCB'0LV$\.!EH,0[(WQ&0/(:^RMDAP7$TT 2N,X D% *-PJ),"K,
MQV@1UO7#7C$>$A6>6'JSY."ZNEQ1.WQ@0N>=DF$/>WU@%]D G#C$JLY4#!@X
M5]3V2'"BC(-=H_CU/*FR(*E E%6P9 8@/>$=*++A"QKT0=@WPA'DK&]:HRN:
MAQ56E5B?D.,@C@1&Y\"9O9O0'!$@C/*Q$0>SR"B@=>4MQ!4B@GFH(8:Z,RM/
M16#XF0+8 5(^Z$O^ %2M.CK D+S'\6HL(@X308(U^S),>OVXT!G"'T049\HF
M @1A')*D78?CT!=8AIKADL9#(\YS3PV'&)+&%0@]>D*O<MPV",9(=EUQ!]9J
MJN)QHI,IF%>CIC*3YBHS:8X-*UP:5OA*FGF-K=V+P+D L9]."MNA06%U,F5,
M/X)J1<J5D=,4K5KM1_SOO&7JVJ+Y21M IL14S4K!!_UP4-MN:+TN?%\H?PK0
MU*_HM(!(A_IXXX@\*TIAQ.M)9CM?:S,YK957=Z6U\A'O46: E@;L"DI(8)%
M-_1]90.. P"=R6UCI2G?8$*>DK@D(=YE':E%L#8'76V:42A?:[Y(CY!)K?9(
M28-*SNY4S,\+X#:6)IIX66V$D0Q*G>6Z VC4&"SV3H1)E!LIIL0*V&7$#%A[
M(7#J4E^"F+GA#RQRIII;?N@:M_C7$/N40/1]0MM"F^#7('3: 7PM0AQK!>"*
M4L[,0U7;S@C-;AC&>#29:EA \)>JVYSWHHSH;:>-,M?A0+KA*!T'EA678(=T
M)[4358%)*GVS/1$#J*%AU**!A27D1YEU%^6MNH0,]#%(DUU<!>6==P)R0_!"
MV0.5^E_"V@Q1_ +L_W92YY] 3&!'%.83UN87.U/\HM3G,:RNKDLY_5WWEA7N
M-2$LD"#N]B/"J76PW5I4."TJ7O0Z2;ID5IK9\6/V6RZ*H.0-K.A;S/J:^_*O
M4F3+59G,8WY$D7/ NF9Z'$^6>RR-#N!ZS5@"U6_@=!.  AFG9/5.VT=6WD5&
M*!A.8)BF4A+#<]B/PF* ?@?C"_#ICF&=N^Y) 9,?4TA<C;$SAIAQ:,&RPB7D
MN)*$,5 NU\VWONC2"B=A;UZO/!6RA/-F]B.".*/'1>0PXG"J&%Y50VXBQ@B$
M>*U8)EICRPNS+.(H;Z60K7!I'#@23^]^?B^.5'Z%Q)FZZ?KRLO!]77__D_EV
MVX%+BJ8$.8QC_F+F+6;.9B&NB.2=4"*@7#1,^)98D$LB0\!> 7!I#2Y.;P1Z
MO<WY.-IUU$,V"]$*YD>AR@?@"OHC<)DX%FQ(C >$.<<S;QMEWT5<1-A[#[L#
MWN"!JV-9NA^RP*FYF&Q%0^V61\5XG0@\P" 5(^)@U!@!16))@XFD33K$5P$'
MXQ^%%^&S^W-:49=@6L"+P-=3F84/3MOC^.:0WG4C&6[I&*@+EA<(]H',#BZC
M3B)[%>=WC!?\2R"QX6_7#/Y@]Q5EQL'G>%L;YB&H@8KS543H<(H/J;'V!;YW
MKO[^MT9S[T,(.A)L'^:%<"582FZXJH)F/HY\HDNA+\^QGGE @?V>%("O+!:
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
M1E-.XLJK43X]U5J@;?! V ?]T#HHEJ(,>3C$'D<>WW-.U-(B;#5J.S5%PVH
M("XQ?6IV<AF]3?*_$E&LI:: 1Q&A%1/C2,,7\T6WL'\=7T ]'SDYDTH6O97(
M1+$P=>NEAS":>)7Q./$*4R-KVF_00>VAWN;8YF Z^4GB38;$U)ZI4ERU^6=1
MDRS*DX]\F":*XT+@B@Y?! YD^LA"<Q#K9,B+SEK$,EY5,)R*-NTN*FM&.?8Z
M"%:VKO$HD19/Q]20H8\ N4AB;-LG*B !0R#X%'H]K';*77@.Y!+*V_1 R,R
M@V^I;B6]UN3VC:J(5/M2P+O@0]+S3=3/^)?I$$J2"5G08\AHM ?<WN?^L!
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
M]TI=0@RZ);#Z*J,&+U/%EDTT2<_IQ"9//^%P)Z5VB[)W2/!H9X>HY]^?'>]
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
M\RV3%A$<OB<SHT6N+D!U(NAZRGZG!4!8JK?:"T:PWW"0$1GPY 2YI*;HI"/
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
MU*# E"K3KEJ_ @1Y&R%G=,E;5.20"5Y[\ E>%KRO)J#@.P:Z %>U32!K7SZ
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
MH)H^(.T!RQEFA$,/:_G+4?+L?;8:O'%NU6!,@,T*LX%.WE@[F,=X.?-\:U+
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
MLWH\9)AQ'&M93!:9\+:U,E%7D)0 7PQ:"+859.&T8*%PESR@ K8C+^8DK<<
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
M%@<^$QJ*'4<1><6CXVOOW3JHH\WJ/O\X"!MR0;4=7C<3^.W3SEL\.SW";BS
MFI7&@MIN]OOFB6#1Q&/H=$"[<BS<8Y>RD]&);HL^!N7 0LR1(JC@Y;[X&W!R
M6FM6Y5UEVYQ5S68B.CW) GO8KR^HB;\,19<;4OK/8F:];AD@%SVQKLR-VPY)
MQ7U/MT6#!3? CU$,>,3G8_G=J*Y.HL,QIMLG(^*S'#:Z#A&XKIHS^AQ(NU[D
M?"AY\O#HR=;-QF&)%:!KGCX\.ME^@>]<R;U2XRR(PAR^ZQF6SN+V/5IJJM S
M(#'"(=]MFMQ"VG032,#2ZQ ZJ?B-DTTG9BY]9HPOA#Z*++Z9!&@FTC4M@J:H
M0$!F#WL,)7XC%DX^%AM-6-@J&T!MGSH T(/[E' ^H(GWC0_SHR-.)VK3#;(<
MJ"_PBL-F@6)5UY5E!:=]\ ^+DFX)CZ$]Q4#1=U?\BYL836VW&!LK7LQ/JVV7
MSTL!._O= SU00._KZBM%391HA:)CP[2#0C#%TS4@1CN41[ .HD+H80_LZ1[H
M!'/B_*<PL!KV-:NN2EI?AKZ2341F1+ =?--6\=>40\2@O"$,-6R"?=T$00U,
M"W(KQX%&Q#7+2FQQ!.&,?B>TFHO;</1S:@5N!BL6IRN&K;"O6T% .BLF94V9
ME"&[I-L9K39WPF*::OY5@/.> 4 "6.QS%M@<L&@'AN9]7FR.2>*,:U21XP_!
M8>/U'#MF@FB=-(IHM>]HH44,(T46K RKVL5S='Q5_Q0I?_B4J)_OR"&,5"V
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
M/2:KZ".Q]!/NGL1H_G(=G[86D\/%S[_#D=8ICAI=F/M@CU0&@V;5+*44##5
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
M&(\35HVCY#CY&1SC^Z$D!]=1"J3J=+(> JG[L30W*\9OA\SBL%EN*WB??'<
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
MX =5N4DG[5.&33+!QV6./6?IZT)A-A:5N0\\N.;0C7[P.C&1BP CIEH06*3
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
M,LU(2/)'0H;'R4*^O)8L-3(7H8^-7T>5!-XF^8+%E<R=M6L_JV.'Y:'BCL_
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
MBX 8<1(X-0%!C VV8=B?6GD#-#[^4S,OEL^9IZF@'. =('S"3-U[.E0XN/1
M>I)2!Z(D&A#S-P\R:)#@.;,WB%TG[.TQ!;]4T-$6Q0J9XA$S*S#X?> .2+.C
M2PP\3\B'X#X>T'P _QIRF/3?H."7FBCYU8CI"DIVL%L/Q+,_@?X_33#@&*CO
MR 8YS);R(]Z>Y<&>430#BAJ/68*<IL*T#(.(3X!9()74TU1@G'X0\@:"6.IU
M:FF\+)=E5VEY0#G\CMF$K1QE0/]'+DK/]A/3,#I/HLYP0R [ CE&BI0N) 1(
MA7V@>PI68@U1$QX)[>Q"B=(1'CP!N 62*N@"(:T(9L5A0SA(/Q$\*HP5@-3]
M;W@]N$>/&[),V#DN&F J&8*PGX3LD0G@5LE2"NP6D#[Z@$^%5.JDPEA(*YL@
M"NK##P9 $ZPHZ4> HGC4@.P/(^&K9>!JC44H#@]W-4&J2^M1D%3T7NC(M^A'
M6@7_PD>$ZD4_HUK B42PGL&(Z9H\=FOP-/!H4#NGAT0C.#XJA0[_"R0&EF<S
MBTMAEM\&0/#BD98B6 ?03"=%#044])+AD02-2L,$[JC0)WFHE&<^!P)$'-E
MN]M3S@X"ZACPBG5%@([ N\=/7H!7'X0@0\&?@*RHYI_.?5EQ+Q2?X/G>E%D
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
MZN&/CNU2N%Q>V63!3 :62M)IQ'52)(A:"E7^*. Z)/-)NROFJ\N+F 8-$FQ
MP*'XTZ= I?/(^*9E3@)Q3XGU*(%Q? ;0&=31PB>#.Z;3.B8='P88RX&T@.(&
M,4F,P FC.:2P<Z,/!WZ]8,GQ-A76I&!_!9P9A6'8Q-EP""!%J*?>3<6D)6,\
MVEK6DDP(+TVI/WY,+W0_1(BD>.Z\K H\X<D8?K@'EF2!10(7#1D&Y"KG;VEY
MB>Y-RY>E;WR&;_RT](V7OO&WZAM?+@PM+S0<N#/H^SP;>T8NL7.QT7"]*)"1
M[X;_1C;F"69IJ3='RB:I,FN/,>_%-/,ULD[1"@LW:#F9Q$IF2DA$U66I2!J2
M(_6?IO1?LG__)<4<VD9$4JX4[&8G/LX]#S*'L>5.>C'@;R/ .J,*T<,4D0T/
MPR;^D?A2:&KT2#$[)6D,E8\)N<0R;_/6(N7\18X="CH,/!MXT@(%Q?;0"IHJ
M.9E=VQ.0C >$^%)--[T+<P/FFTLX8-:53)!WW^7>G8*G9=Q'J-!FO>Z=;,C
MH9H OF5..EK&C]9'<XFN@P# Q.GUH117XZ"B8% B(]FW4C"3"O62"%:QA(OZ
MUR_6D2L]R9\0G;\A83@B^_Q0Y;'.&^<8E(R$TZO.4CC_0F?Q <96@Y^I>-;O
MZ!HC01K^N+X7H8^,6;K_U?Q2QKV]OOPF9=OC]2T*:!BL:VIAGTG=NZ5*)1;.
MO*X9F9;)+4W]JI6>R*I7NVTJ\M*H-ML_5[(5(Z9SD-GC^#LH\J%]1R?G!JNM
M6=EQ--1Q%1 &KP':'WS,MDY+<\PF)E3W 6@G[0S4K7CD/56MVPQC>AX:X-,I
M:"XZYIGC2IK++ZLD.3*XL1V,_AX*$LY4?EZMVJS]3*=4J[9J/V,MSHA=1<1(
M-=-CPPH9:>A01$A*IQQ4/+(=E=Z1E\6VA;[MJ;1\\V0-&\LJUPG'C?Y8W,/T
M79"]-PPQ&9ZX';F3T?,MN2;;J)#YF4XA+.3#69MH*4#N+V4)&>ZD333HK ."
MR1#U-#G8(GL(8M.2549>F,?-F9A3RF@0_I FCWKW YG/A!^Q_<OUHP0KVX@J
M ;X&.)]DF#2C#.X3K4YI2@O2"+B*. @Q6=5PS9&,X 1D]DVM3I03A"*+R@!.
M<W8UHN:F.>1[G4DZ9%$'$Q5 3N0"$78:'/% !R7S!XV4;_V2/1RZE MUSXCB
MHQCNDAV6K:CP(B8#<_8WH+V=>%+,PKC!,3M7I8E4,WI7.H(5Q_\==Q%&*E<C
M/X6NW8'T%>"$UY^6T6!^P 9&)DT>@%"D5]$'4H&F6%R7GP#,%-< 24LXJ6C.
MJ5H?5-@#5/QL92>V"H_9(%?APD&ID*.&19HZX5I"2Y)]5EM@G^CB\)Z42J6B
M[&S/3%7#1_^$^XNL2X"2@,D:(HQ+D$!,PV#%,OC'4ZR8?-& ;!8L U&+4ZR;
MU9K4C6"H.OQA'<W=&?-G&RM1N.-DG)T2"+E/'*)/^>J:8U:XXA@)#Z' <%@N
M08 CC3%O7KJ:E(AU\>GJ^^>SYPE9R#UC"EF*L:IH<3SMD$W?/OKN"1*'H$'!
M:4MS<@0,"@4/,9"QR#A7%:VOZ,75@NT"Y>=>,C,;OW=TE -I?DCSL HS(B7Z
M!"HZT.@!8R 8 JEB%@!\@D2[0D11.=4>?"H4SJE-0%"Q4@Z"'!4"T$B"==7N
MI4@A,1=VG7BJQKC6O@<#X<D(/(6QIN*Z6$(B]DT^6=<WW2XZK32%Z!3IYV>+
MRM"NU!FA@\/Z^5GD-GR4TM!7?*@, ?U,J]T+B5215&RH>K<D"S)JY2F5:K$N
M>-)'D4'6_";S!<.;XN/X@.NX=BB]#2@E<&F:!4>^@<-X73N@]'5]!M;S!FR
MI&ZY8^M21GZE\,6$_RRY@U<S032,^B:_NE!9#TJOKL"X@ZJF^G]>7EPJFD_"
MBBV!^A\V\/3P20ZO0^! PQJ,I#.IK;[\1^*I!S.4I##VP3J*@SN!5)?+"\J%
M7%V>I>O(6CFUF=*5)Z)BX6SGGHH6IH[=@FH0.N_#B"9@X^D2V21,^. 7[/*I
M I-LCNHERUDR00[G<A$UJDS#)0"1ND]BI=,1^^/S=](%S3?X\>EDM,%4220G
MZN69+$"5W[9V\*/0B9X5$!<Q]@)+P.3K6&&["!R40C+I#623MH4":D8A#LQB
M<Q3@J=,2F WB>OJF!*)T=C;TD 4'%TF*.ULXYM?!NM#QH#.":-0I]*FR6WY:
MLMR<24&,)FV J/7S C-K6A4+QV!GD7!.E+J>-9#@H<S0U_$DN]7:*5L-VM73
M[L^Y0EOZT+1DJC3T-!EC.%T7%8>["YF7%W,4BO+44(\"+"!YT7%:4R>9$Y)?
M+N9:JTBXV1D+I5TEI>*=%8BHL(>-2J/K%KCXSU+J*N+XW^CLJ1YMXE,@XTT8
M<,C<F!VF!\O^.2X'&. @="=*06!85$7J9.$RXSR,GCXRR&@"VDLV5(X#?YBP
M.(;W("T?S$'XE)N50K/2S"M2AXF,R@M:7T_3CO+U71IE>9<R2N9%43*],DJF
MC)(IHV1F\LIS#$9$\<7@EA>JGM>N,,J7S_*KBYO]8OLV>R'R>W1W8I_S0'X6
M"=1()">=#6H*!-A(0'$JJ1%QRC=<R!6GI/P?9O4WY)E_)<Z=2GG%:!8N^,F)
M=9@;*AP=#H.B!%FC*MG"B:H8:VI4]-,JWB!K>T$D?5@L\-X9)9<I;,FLJ AR
M-WI<.=4PK5/G%SNYV'2&#0Y"-X ]RM2[*$K&$Y6 :+.93@; JP1I71?/C+<?
MN.$@&4>Q;)!P[5,<E'\7L%(>N1$G+ZGT6<.&EZ[5E,*"2!C1'+KNJRSPQX+6
M71 X#V2#<(W^(3*B"YZ1V6M&^+PZQ0%G(6!0NJ?E-8QIXCJM,@^)''KI\GBW
MJI)KG#DLRM[TV1<L[T*F#; BA<TC*-A'$2%31 5('+@2JM2>4^@R9<_(!+/G
MP/6^ZD(%ILYO$B2^I2!QX!9/K,>M$ %U] >;2Q,/0YNKL% R<BR$Q_8Y61(Z
MRE597KG4,\#RP$XBG9M!0K2,@-"&+_318S8@N@499QT=@F*;1$,VV\.@&:06
MGNSKPN&2OONOQ%@XT2"9WFKF!6-%))PB 5S[EI:$'L,LRJ/ Y6FX"C<9]-(U
MJ5K@RE^6:G94/!Y0/*02/_0V%63PAA1#:0]&1$-"."SK"'\_B8,3_!>[2(P"
MY[A*4AC]KB<G![+-8944.5!0.CPSI5ZPJPH7/-'%\.&R?3/UMK"1C!:!V2ET
M_3I&(5=?.V(K5;I +IR-A\ ONF0C5!U_=8YI(814M6BA#DX78\^>E.2EFJ;I
M/@L S*YXX)@-6YOVB%T8];!Q=B7,& 4@J#>Q" &L?%@XF:LQAH#-=_)5)/(>
MKXLFBU+.EGH:[?2XTDJ-F<:0F;7VGY1MSUB77DC5NC42N_6.72U1T*U*B"-6
M9YR<2M+5[98D\!"XR&?,QL;<\UB5P>=CS:6@&?7JN4ZZ2S>#OE8RG V]1)#)
M';/9X2\Z6#0"Q,#C'*K(@;%CF,B?@A]YA4D.L9(8IOJW<IS#%=XA'!),R[P=
MXH:(K\JD:?)-[E=R+[Q@8C Y'3EF6SXYF:4(1&E?RIZ2L]D(=/VP#4B>LZJ(
MSS$E>I%SXGYD5"@!'::#J:HOM&: >!4&1T*>&_W@]:>5CET28D8L'J@Z[RD6
M:&DFU^#-@5^>2(8P41Q3LU4"'8HF!'!/EBQ\@/945U6B1XP%R#M/\^K^"OK9
M"\,O4@FEDK-H,9Q+L*E,"6+8V@K_XF[?FGXPLI"A (-8U/<JQ#L-NZE0K1G
M"^E:&6 E!/DZ.0G&:&V7E7G2383V0PJ_#/YI.1@OG3"MNLQ"7(K:!LX'V>+-
MDH]6S&%U.5E-GC3EE)<IRSUC)5<=Q9C.@>\X@M/**2XCC3L:RAYC+)$G/IFK
M1<PN-=H%OYY>">"C["JFB43ZHP%4S/Q44>U9SZ6TP^9>9UG&8"0PYK?H(KCA
MN1 U['.Y#%_W5C"J9.MI]U7(7+9I\$(9+.LF98K-KZ:_%,MFTB]'TIG$:WR"
M<IY![9!2C.X-PA54?!5=*QG;T!,L/(DLT>2,9^5#Z5,M"3?V)$WR4YQ4#B"U
M2.:B=%IX_=E!-8$R5!.&0R-3FY-[3<JB0#,A@2OBKC*H$L,):G,Y-^^KL%A"
MO) @4S?@3$401K$92R0M5O&4&;0_K23F9"DG+B3E]#I15K%VSK).L5@&CLHP
MR$R9E]09?* (\J?9J$8>A 9NC3:!;TJAJ 1[64XYLF7E2VRXPM)-ZF-'%M0'
M 8-K,%#]L R71=U$2DE2.^%Z/Y)> 5# A.CKKTQ/BO.(D%1F&7*D  "K?<B.
M+TJX<E.">*CWR8KV;]+,<N#:M=HF4V0I["-1P::G;BC5#XSBQ:Z?2/I!=4+O
MO@Y#IF9'**B;QC E)A&9=$$ &Z# HTQ7JHH'SX%"@[D,(&MQP2),*R.24JQ"
MQQVRL.%3[GML:N0;1?,BP1H)AF5@J@F^QNWMBI\[HEC1'W[PX"O]<3P)?,ZA
M^+R@\ &7+.(3<#)EK3AZCV*BC:W%@K58?3R$[OG  &17N?)C-:D%:_V-(K-S
M ]/<'IHT*(A;UB/C&K8HOD>JR)G+02(#U.@&.GV1UHQU>DX$TB2/)&-=G-#E
M6K3RZ)419:I.AI$PHNH<*5E0WJK2$K.+ER%$KH8GQW4D?97!]05Z+%9'@36S
M;4+F%WID2[#]K).<^EAZ0E>KX<9>:?D;4E$J:4"N5 'O Y?4(V.Q,'5X=[ 4
M\<I7MV' : 8]TR!KBDV;J AY*5/ +0&*>%C?D3(;4KT2K5-*>4#:0CHTF:<0
M'E7HM*(U>2JC*0O3&<+[,5SAB>?^$-[3"48;G>!-'N&W''S4QE[8]#R7V7!5
M:2_*])JF(X@Z_":Q0SL,G]*D7U#S1]S8&+=)W\_8:=83H*I[4'E,FS8"!R]#
M!+F4449Q)4N'?*E"MDPT^QAQ&'G9C8T1H'W#E)A@QC6:,,@,Y3)UH"1FL.J)
M67Q\\+K[,Q>C0D+H!<$/18'36#] <8I:2XNK9D\OK;\HO4I:/J6LL]2.I*7*
M,JIB)Z(JFK4RJJ*,JCB(J(J7G,<RKO8KMHO.X&Z*/T4+&=0,AE0@\BYB25S$
M;L@B:(#B&HV?\N+9ZR7ET&<6A@QC>C]1SMFE6??T0K7-(-T1BZO&#@>VA_4$
M25J@9N*V60Z86SV0C]M@BZ0CVX.1D#X@]83\&M?(5@^*P)>&;=0GN+X9-9 ]
MP3YY1C5T98J1*<Y2M.0U)FP$E@R;[DG78I-6*Y8M';*.3[7QHTN=/3=O(K>W
MW"8,XXVLHPQ7\&"'S@DR9IQ=^@ CN=IQXL4HV9I&7TI?FY<2N"@AD%T:Y/G
MWL(J EXGK$MPG7]C5T4PK4%%@S(?O4J+1RA/H49!:48 +S#O*J$DK6'#<B6I
M*/*O'.Y(+_$RL%Q1:,6+- R Z7Q:6):5"QF\IH>O6I<I3BB<LE7:+;L1,[+3
ME$\1E3M7>7<-9P)%;[#RHQT!%=,753$O2@N8I.#)!I7I8#+ED2-$\IF+:83(
M<.9>I(8JR^XO(-P'%(3WJPLJ%&'%=XS5.7"3TI41EJ0]2M2SFHF3="S&F6"N
MIY3V27N^48O#B'^2R;-"1@JHF6;$AVD:H-M=2*@F&HPY'O]*N'-[JF2FT1=]
M0;VW37?8<F%T5$56+TT:]ZO6_RC%BNC! ZNPTO\%:,T=S2DT0;>@X"@PC$N8
MMVM)5"3AR;7VP+QD7#XSF@Q&*I.4]EFR5F_>G[Z'J,#!S\9D&2-CTA>S: RP
ME#@-29.5KM3L; 5ZI,UX]H.LWCIG/6F8@/;XS)(9D-D)V5X=WM7N3!7\]P=
M%!7Y9$>*0.+J5;@\?,5"@JTZ,V%F'UG00EDD/W7M_I4 TW=DC82J]0_C3S1V
M\;84$:WHFF@$(XY0?[AD0@#\HR1.W34]TF5F^J2 \TY4BT]* $,?,1G8$!6S
MN6'X$X<796!8 X_N$QPPN<Z#9D4G&F<-C&/WD:-=I"QAA W*5K^90^$ E=1+
MIHP7:5,'$U>P^NR!TL4_%27,$@?L;",IU1P8)%1B$&<77L#R'D=UD;-<.K&C
M3&&YQ'%CA?D4<**B.3(3RZ!/8U2)]49 9A\+V1'X48A&Q>AQ ;^PKYP@E.1A
MN6I*1>3EX$TK&L'UA4BO(  S#D37^I"!H?D#TU"K8I^>*,?3V+-XM#6!,X3H
M F]F:NK2N;CHS:QDK8SJ M+2'YD6&EEQCK*HN'XR1Y$4;NV!<FH7J8,HX4YM
M7/?YB #&; RY2&VOFM&2G0XMTE%LB*.%@V'QQFQV9KOVLT7K<4%]=+C8%5?S
M8D;"QYEO^FTS0Y)-OI\4&XTPCM C3XHG'-82\-:T9=(XUY6.#4]I#4?G!T4/
MXKH+N#\>ZTN#C5^I]L+:J69,\,^FO;^]J[VST$8V04>/?Z?_CK#(H_S[Y?D0
MIN60C6J_QOW >6(+U:]QJ$Q5L:-FP^Q\U)N5)A '$V,<'&:[BH!MN<[?WB$#
M[]KO+(I#2?^4QD%X\KW]$3,944F0Q][_V#VK:J7AU_>QL]IF>]O?[']GC$A
M0O_;,#I]UHD>D75&K$56:,>BY07[A$]PO6QQU)<.'Q$*#U%8X!0>EXJ"2>U<
MQEYF<GE5UP.C;!PW V1.+AVMXP![-M  E5RA OZ.]/WYP8KXX*%*9I@GIT\I
M X"'M]=S&8^<AI@^L HGM5L-4:B89FN$*$A"Q1K[1Z1,\2$(/><!:Z4QK**/
M<FA$BU+)!%.#3($2RT)B$'Y%]WN>#KW'UC+NA*5&&6 U8F%"]<S0\,VQU;*,
MH<]1BK)]3::%"A=/T-LA(5BUQ$A"+/>ES,OC"09*P1+N Q2U.0K*5QDG&. 7
MD4J9U9&YC =LSG@+@[$RCRBU"+=AAMYCY"$6CKZC5BR1$#_8#D -^0P=,K\,
MU?&&>XIDGI-J/@4V9MNGL9>.Q9TH&:#A 42V0T7U6SJO^&F"C-)[HA1'*A.4
M+4+=;/^,5WY[<Z.5!14B3T'%5"N&6\L9X=II6(K4>U3]+HO4@]3@HO-6,)R3
MW>PQ\/L)U]S$\B9H8^>L(X!IDYP;%V["%N9G)/VQ&Q-KZ+N.D4\@HQ.SJ7O#
MK%U,MZ'A\<D*I<KC87T)XN&Z4!*'O\O\/XHDU$V\(^-P;?112#\(P& SK6W8
MJX&F])0V[W$=TIPR53%I#@K*HB7!-U$04#@6G$;DDOJ%#A5<E[P;-](+VGY
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
M#!'\_>Q3203WB@C^;O>%5]*_-P:A)?W;#/V[^791TK^]HG\WH< DIU(7?HN
M6I+!39#!9]7F/3#(VBD2>(X!6=:-?2<L"G:Q!Q2V]=F.;>O2]81U1 5A8EEZ
MP*28&/DQ@'EM^,;!CGLRFEV%F]2/#RBH.[>B_((84BB&V\Q$LI,X^)!)1*)O
MGA/FW=INQ-7_71E1>VO.E5BTPN\C-[)D!!C"(3P2)S%&) &(^P#0%&B% (I
M;04A?):QB$'X9$T\V\<O[3#$T"5\N+IB7%*.3+2>'6+$1_>2X,(U0T<6%):#
MA<(];0\<5 UPCDB+7)C'AMN-8WLPPLN-.$+.@)F1#82NCS%ZP=B-\\')5[&0
M@7.=6OW(/CYJ'^/7W\2=]([PC[>JI$C5^IXIRP#GX'G6, E]-QI943*9>+(_
M@_<$(#H()D\8VHRUT]7TD=P"@N7T!E2$WQ*Q=Z'X5R*B GA^'?J[+S3^D!)W
M?NUCT*SK_.V="X!<[[RS@#SB).I/F6@(3[ZW/R*P8Q:6/-+^QWJG^JQN9;TU
M[VEA8'"?2G]EUU[C/PDOX>__LFZ3,;SUM$-Y9ELY'TO]_RDMX&O@B^HKSE\F
M=<]+ZNZ52=UE4O>BI&[\Y_]8C$@+4KU?ALP2EF>PE)!JJVF6HO[,L!15?XUK
MXF*3%Z[*AO*1"$':N4GZGCNPS@8# +L8LRLN7:;D6Q0;-L)[OTM!#0M0C@(/
M$))%-?SR4V"'#I[*9S<4 ]!$L*+7)A=37(/OM8_XY7/\ZB) 7D\ 74'WPW03
M/-ZT(HIN$,1G3\8-K"Z(:!<&GD5VC_1Q!E> 0@9 ]]6!\.5S_"E8Q;$3QT7U
M L_''@P8 !#?4&G&J@"<3&1[%.@?C82(YU1OY$:69D6Z(QP8Q:U&[8.1?M2H
M?SB6U2JSM:9E:Y0FC<091CA"*#Q:2&9547J+,$XP$=QD$H@M[B,4(S35PQXQ
M+VHL@ 0;."=SH"Q0AES9@'-@@RXV](*'B'*@!*A6*O,T!NHEK"=A T:Z#$PP
MFQLX,CM*[<%2RZ]HG%8K]X-8J9]*D_.0VCEJ0*2$CZ#2&<IEO8VZ9>/8.@*^
MZPFROGDRKPNI)"A]<(;&"6>.9ZCA-STH=?95"P# ]J)@&@KR26*N0HZ!B1SI
MX*%"CKGW6;'0/^(@*@Y 087#LRV 'N!WH 'S(0#2YA&1QS@A!+WCO+;+T!Z+
MAR#\81TU:O7F,:*C!:IMPCEO<@>D-!,GO9W@F82XONOPSO;=?S.0J*O]'@K;
M ?G(5)&/SJ]OKX_GBL/[@>57OA4D(: &$4)&I84PDH6O/ERW-6%GES6TW="C
M3$, '@\$;KI(A(%H N 9S9UA$D2N*E%E -JR9$ A5&9TF#CQ&/]=_$?3 'H<
MOUH#5N<A&9Z%1:#I&TD'Y3W:J: R 5@;N!,T-MT)']9#-IW!0$P,9,?*TU2&
MVHZY;.?9&&8>V%7K#)'2+;@W=5QCVY5F]7GW((9#IA=[AK^(>0> >"R ?+(C
ME\%.B2*'(T!\+V 5AFG=C0@88<LNJC0RJ3A:@OQ4Z&$%Y0B7SX!E)A<X$-(
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
M!GB+7P,_R.+F"R7T;J<,/WX30-BI%7EV5Q8N-@&$O6X)@V\$!HL\Q"L+)YN
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
M>?&%'^/%ZW"BF8_L"S_$360%^K?.X*R_P%'_AB?]%0@'7QR,76;?,LJBT<?
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
M[Y3K+_#;]=F_?KO^=GYQ2U,5QCQ\2;GX?WY<WO^Q]?F_.[<,0[,5[0E8W'6
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
M;WE/.E'N)W!(8C*PZX$0Q<.C5$@'S0E^^!/KA8X[=,[U[D?XW$1GXU!\'3?
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
MJ>I$"MK*"-J@JS?/\5DA4AO;%*F701[27DO-T#J)GRD'CM('J*+*>N'5:!A
M)K6"IKC-L%**1"#%KK@I2A]!_Y3V@FXS( Z01J%T+C*#J0X,+$VF4U84N@5X
M[=482,E+CA"5B0\\'YQ_"OX'80W&,!^'WHN.BZ$O%Z.T/*T18W@TQK+YJ.B1
M>$&'/OYKV3^/=?-X:EOD9R,WX6PZ->B#T0G'306GJ5'%FSG2[!&]$YT>6,NZ
M,X&MQ1"CH\S0C,0M3I"5%-<C<0E34U-^T@+!+')/4*+[V9]2#E9.#MZ(],8;
M ZNFS-&%E^&8+!<7P!?*7/U-."73G_!>B\B;^"S42$P=>)^S_'=T0C".K<EK
M9:>:;B_/O1'N<\K/ 7XU8>*A(4S,KM*-D2A4#>25_P5XIF8Z7IZGS<8S^P'D
MS)/PJK-7W:&;]]*'!GFP.'$;JT%?,$%&T5#Z#86+'WX?\@ZAF&IVHIS/Y]V&
MDVCIX]ZU%ZW<-Y)TZ(#F);F\N#64)8?6VA,*RKEI\B\Z8-X1MBG5\8:^PI.M
MT>]#<0-N]T<,UL#U P(774>&_LQ\(]L+I?!OGOC5!7.??D#?TI]H36,DA'EK
M6$84&GJ=T!WA_*I\H]J:)RSS%3&+=PER(QQO^,]2Z?#Y[?YMR@9PLL?X^,O0
MT[^3__P_MQB,H0]\AZUYFCWQUU/+GQ^T^F_ZF(5%3[N'?2+GL1Q&,QL3?8Y.
MZ^UYL<\9EMQ%]8])-:8%K%M[S7/=O81U-VOQZ\9WG?<?E<\>K^5[]-YCBS[R
M?L+2&TN67L21+U]OKD==CX$K\=?;6G'4A-\XL8Q"6=X;HT2^QPY,2S>E3+9/
MM_9\":*Q >^C]/^N#2>@M^R%*I8\=\8?)/Q^T5313-J9\J@BY=KSI8I69JJ8
M,YZ$40CFE3&<<7,D*"A(,)G2YNM2#HH[T> "R1#,17$M\@P^PBV>H%_@K6@9
M5>*,8FTQ=/VYEL+MZB'/VPC-V&#/S'!$YBR&<RQ',U0O*9V,9&&'#8>S)S%D
M9$I>R8%P;Y/E_61AM5LHOSA451Q$G!XI((BY.#STQ[_KI:' /(.\$R^Z$XVL
M$4"^X[M< _[E>V)8YB.E$D41]7VW+2_-"Y69<=M4F]M(X41X]G89,Y2XYP4)
MP+=&QTP19B_'[<>!]SI[/ZA1Q].CPLDGO%!Y]YLE9CCF7/$$Z2 O*9JIKYLC
M]#.%ZEV&FFT3-B_YM)P(S9%[AW[ 5-3I.^=].OY+$U(0$4AT*5&X]=X?E,;R
MBG/0%0<7).(EO&Z*RIUP/1$EN(WQXD%D1W!(QALNE0%ECUB0ZQ7Z)*9>D6N+
M1@N7W$;3S_G$0C,-Y:US+L#+TFA^ZM%KH+B.4>1]1IA(P$6ZXU53A:8U<\25
MSB]CU![0M467NM<I9U_QC("%EX.B2??71EFSU4_+_8;B@2.HKT@,:I>6C,MG
ML]?.L6C.I:-0D0)I5F$08-EZU*OCRVRN*4^4,Z%;N4[3P#+QX0QXO-,&:?ZB
M&:3;/X!8\BMR+"$;1/4." 8='3"N/_*(%ZJ3CRW%*"Z!L(OL'EY @_D^E-81
M"BSJYM@@PR1B*O@I.@LCC!(+IGQ-@%3/B]'>@H@%F#+Z".TV+FX?9YH-Q\,8
MR>?PIUQ@' *+1 F-Y6KE%NO(XIP2BG/J-5F=(ZMS*E:=DT/7$-$-(GPHGK:)
MJAC?G'0P1Q!#L3;!8I)R\1"4'5(!(-;9E MIKH<%'H[I'0C=GE:5=;PPXSF^
MK@--[#12W8\1B9"$*-F .QYC[D=Q"Q;1#,>[/OK1)5';O_K*&+H0*G&=X*@D
M=K[9V_PPD=B)EW/CV_G\ZT'VZ^+0/ [V](0)K"'XK]^Q!":NYE0L-J5^%&"I
M=(1/&)S27<462#XV@ZN &:VIF7E .S9[MHQG:F9LP9=!V G45OJV;OIDY95)
MKUCZB7*'F"_1&\9R]>_I=1"NQ_S- &(V[">(PDHX'/\I117"2N3&-=@.9>'Z
M=YG\9[#CH?VOHHY\8(XN?>PAGIWIO14'\=+8*@"C-[.]OK!XBPR2"AWA5/ *
M[&)P.'Q1%Q3L._-.R10H+D!(?\Y,[A3UE%$(%^%$\2='P!_/.GL1PB#D]=),
M<X8W$?+B^HXN 4G!L24P5!WQ=HG&G^3K\CU?/M9!6E<RGP2%_P-$B:2L)&MF
MNQ,NNP5T] IUBV58HJHK+,CY]$<1Z#:==!IN17AS7([_':R-_,-Y%IV)V25J
M+.4*@U/I'UKC^+T\7XP?E:A\G%\:K1[-#T:8_ARWGXI<T3;P,?4H[4-0G,E"
M!!>GKS L<<SPAFP@B!O2;U#:$<*R"Z7&^;#E!$\>%$A0+C7LC4@[9B++0G#&
MW&(HWY=:*H@UC_3$L$;(HO+3@8,;L$?B\> 6H8RXZ=0@-R_QWB(VHNIA_\$-
MP++33VK$X):A$IRB00TXB#^U9TL?"8/%6SO,U'XLM0"D]%8'XGA#;!B185$S
M;2*PC[@S!T]0N''A>'G[ 8W\&CP$X %+^C<!E('DP.92G%IP</>O)Q/GI6'4
M]Z_3Q>$)SAKLZI]@;AUC2.PXS9F_PV_Q"%K"Q]NUO]/'WP>QACG<EQ"78<0/
MY^.'[7@QFA>;X!GZPJ(6VT2O+]FI97B."&5OV8ZH2Z,M@:.TO=XAV%\@5-7%
M8W7>EU12AYA@&XB)D.-=#:$>VL +ST ZZ!;$8B\_U3>,H,1#-'Z=V9(C]P[-
MV?C4EIQ"%+DSU3EXM6I176593G(56C"3@-27KYR.T.0GC+NXN#-^,QA>TA9P
MQN*2?($8K-W?^"6?C,;%?' SW([@(=XD(X(.0ZX>A)FX8'I9>U'H@:CM-;?)
M@?&U<BF).=+A7>>+X%4W%CI]@_GX(DOTR D DZ+#RX#2+EVZYG^/O7P5AV:=
MJN#$AZCE4]SK6]CE B"O!]02E.UAV8FH-^,9(JB*)OH4Z[RHI!Q/WT>1'S%4
M6U0(YW+'"F40:\.?AA4JU16VABCOI0J) )=.((^\$6#]W/S(0>.G</#P]-*$
M&!)92W*/T5_IEYY_<D!I>'N.643'^NOQ1!^-F/FKEVO4;!R=PI(^?<#/BA/#
M^T?*%*J4*5!?T"O*OF$,?XY9EN5 -9/ROQKUA!PH*3LK(SNI^/EW"PP^&P&(
M?6#K2].9V6C.)<?2MPI)+*:MA.>]UU(S' FA3H3&^%@W!> O&>X> @;"6H$A
M2!EX*,2FHA,3&6!>*MRBH\K"A#L/)_-%;&\8[QRC;?H3&.O?@G0ZN/+"T7O!
M@]G4BO?UA]#NA>/L\1&[$KI!1()'U_D0?H6,D+7+03)\#%?$5"=?0#AMB)=B
M!"C*ND?8_IV'T%)W IHH]D30%6*38O%Q++!\)PDIJM?LK@MTY:F)&%'A 0R\
MG>%Y4?[LE<4/SW0SPDDU3AH;HF'UFG%@7HEH6"6OL;X*,BN*1:52'U@*%B6O
M.PX%S#,&!+ .X>I\$RU R388<";VU^D9"1ON4^:M6=J'+^WQMVK+CW]7MJ%V
MTEZ/0HCS13X323RQGH76*<E;5\]"0=?H\?EFF8_H?0B!CFRZA1OS6>VDOS$Q
M-;(04V5WI'Y2WY"N:&FAY/=PHK T[BMEW,^)-'U5>FQQ6+4IUNS)JT,!+8J5
MSSMAC7KBP GL?\N<.:LP5GNM3E;34^S59QR&.9MIUO;F]F4KSH9.95_FMI#.
MT6GOI+:>**=B?7%BCH9HC*[VNOK4UD;&]1L#XQA84O>*;2/OM=<;CAN\Z?EM
M;B"NC99;[)):)ZUU3E*JV<JH68\NSN&+SQ2>2U:QS:U"TP:S5"XQ;63VM/?P
M\)?<]<,_#2<[LWDW4:]S531*CFA/KU/+X9$_'Q6%<D4I.<:R&0RE<!M\B#UQ
M1?()?61LS- 1Q=NE$*PMI22XRQ-P,(3@LD?N_0JEWNC.SQ "[&+2!,P*Q Y'
ME=(P)^?1UIYX>'OFZHC4XBQ.%EYXX0A5 C5/M D.K])YT::$>^LUQL&("<QF
MT4=(T5MJ3^2Y]1S&=V]FSU?2^G/RR_P4F/DC"Z?AN%B53,%CW L*B(\I%IQ]
M'2=A,N>[DS+?6 S/G9)IYBP*DY?V8&/:<!+-_^8)77$ER^2=#=<L^S%TK$+6
M;,Q5EG>MZBF!.Q?D/6)4P.T=803<9)3#YE:!8^^PK:ERR[QTU_U6 P/#X(U<
MT5?NY^NFS)*D+V(.2) 9S.4M?]GU<W])'(@6%S-W8ME^<T:P*1V'[&Z:Q'XS
MKRS7.SJMUV6YGBS7JUBY7M45Z TC/$.X7Y.3^<8"XXW$*R%C@NT4F[S5W"I:
ML)BS\IF9;*SO^6UJON0_L7S2\K+CQQP#A&^0,A4;-L7SY$8Y-;]Z8,S$S*B_
MX!\'*SB3?9&U>JARPIO3&,2;(ZXBXOD6%<7;XO;@TLNB\G)JS)PH>J5(3YB9
M^" L_\</1Y%0+!%L%Z-8< M[]%K<!S<V7H 8Y#WP)#:\,5BA3F.B=!&_"9/
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
M^FYLRYPJ0?,O$?)":]DP39\[;@#1Z,L9V+#V%/75LCUNV5H,&^_!:YCHQ!X
MO_28\HKM[O 1=CAU([#?7VW?'(!5_@*6'V-6@O7N[L9\Y\L7[@3JFS=Q#-P9
M>WY!9\HWVV$VB .5.]^C[0&-?-LDM@;]8MBF+=@?X<8(0Y9#W_.=Q&W#Z.D3
MXPW=HL]?MNC8L8=-%OG5>MC@3O08=('N,*6(^AP^38/=YT^;H4P?\ZEJL],#
M'M+W>3\Z?0@6D*)/)N8T<)C.OUWDN1- :]\0)9Z\F6'PJXBG)T !O)[#AB;K
M\UV+=&H<L F\@C$#+JP1I/9_^ ?4=G$><?T1D!2U873]<?#06;?)6&M%>#"\
M/IR&-Z6[LX ?+VE_B7"EA^ ^&/N$;*1UH0+LVP[ @$'VL.4@4CX:KLSU0G?M
MS*,V?WP#]N3-VF$:Z!RV+,:E8-B(,XV0:6=LW\.NF&A\*B"L^FQ/&Q2'=@"Z
M@#?NLY&F%K ,?F @U #BP %QQ^; "91 H6I:\Z+?/HPJBO: X2'/-9%T&$)?
M#WRGA@7:OF<[TUE_0>Z_A%_R!I+H;Z>SXQ_.H@2"3(-?X!;#%M%ATY8BE4:V
M'1B3X89G\6)0D@>>072P/&!'8)B3%FT!XTTL=6"+X9(XF_,GHETL?,^>[81=
M QX.;X>J?7#NN\[Z2-)6,.A/>1/\TO^*QK4W=^!>!6<Z"SHD>6OKE4JBMW9U
M9VV2;S;=V;HDX]>S)Q^3_$>U)FWLNI&B>=5S'7TLW<57/TMWY(GWT'W/WO][
M7-W\JW?S>'M_U7OX,+?B%*7[P/3KV$,"BD MA%KLNEX@.F;!JH,-W-"LLED+
MU9#\Q0#$KC6XL2WQ%XJF)',#3<9NMNK^V6/CPF9I.VJV=MT=+X6)IWP5C=L(
M3K^EN$W133DE <B6LCGQ'Z8>[1W7$A<EPT6U'+C8=IPZC4/M.4Y=FH64.&!>
M@KX(]_JK@JW;X1ZF#)H7&7!K5Q*&!8:64%JD+#2(X'"^!6=SP[S;X3T#P_IE
MO<&H]9//S;:J:7L,D4E0;0PJ+0%4U?V!JG;RN=Y2.ZW%24(R@:(4_/T/V_D!
MGYU.'!N#H27G\*7/HFA7-V;J>")7F*&,YU$$ ;;5CK;'!":)HW5P5-N8CQ>.
MHP8H!]N<:KFO >E'P<>Q*X$[8@.:PR?9^*;D5]^8C0<'@OT#"B$_30,^OE@8
M*?EXJ8'4V)B/%P^DAMIJU4K/R-^H0O[@4_I5P2Q<MNK;0JN^=G-C*1&<=A%T
M756KG6;)NN1)Z)84NJV-Y5*QT-6:.S4MBJLA+)^]L=HM\XNL[,:.85)2R>V/
MM]U!K]W>6&P!S:])Z1U-K58[)6MQ)S%:.HQV-I9/ZV.TI:F5TF&TI.5CL@,@
M&-1-V0%0=@#<1@? W==:W(F2L3M3ITSKL(HWJ_:B*FLO"JJ]:!Q2[<7=_>U=
M[_[QWTKWYD+I_=_WJ[MOO9O'XRW#R-J2N\222U6QF!=4:KA'5*J1R3:2F45-
MEF8<:V:Z+,V0I1EOF@!D"KXLS9"XD*49Y2G-R#O3419P'&$^P35UEL&.+V-L
M4\$[5Q]<?*;,.?>=E&2Q/Y<:1E^FC],)H]9I>$17D=/)TRUMZ7V_.FNV2,,P
M;$.M[#8.>XAQF%)C,27?[,"P6%,[[3VF.\HLM=1QR;YAHBY5=DE2@GR=#()-
MR2'+1;#!2>R-4!MUM5+;:=Y9^85&^6&7DO]U(+#3U%I[FT%Z68ZRB=6!/1I'
MMGE09D?YJ38E<RN?=A<<2RE4O)JJM65AXH%!,"4Q2T)0&AE%"I%O>G]D6,R9
M"Z9+*;(1"6N5E,8CN4@X/)?H]WLC80T(H[K/!A,2A.N ,*51R2&"L-Y1.ZWR
MNZO>J#D2GC$@8\ <,6:"*28J([+2LNSE:EHEI:U*+FX1?O8=S_^2'S^IHGMC
M&6VUH>W4?R'+-0\7_RGM8 X5_S6U72\;_DMOCTF]<U.]<^W.+MN)<M:;:J6U
M1S>V!-$Z(%J[J\N60N55M78 ,RK?J/%QS5R:'^:/Q;BQU,%?TAHIA3;V+I7^
MUV[\TIW!X"*" OBSR6B4IC7H1L"PE%VLZZ:H-M5:HPQ:UWL)\7)#?.T&,?N&
MN-92VXTR]$%Z+VV*-Z(.KMQ0A29<+47^#?-Z5 0.F#JW+==S?'HH=7-]=MCZ
M(Y"UCMJJR@;O!P:OE7NA[ ->Q'KK:D/;8RJ@M$/2[)#H6>.(TXDX;6EQE$(=
M2V,!VJ8A^V0ZW\CWNWY_I6I=K=8:)=#09.CC *"_::) >:"/&EA;;39VJH =
M0]1C%V)S>7?+E)8N)4]%>],]!#5M[5DL6Y!Y6KVF=AK;%'JR\>51@';MP2_;
M &VMIFK-;1IT1]0)<U<=QKJFB:9;@DA2#%<Q[3[%F*BA&%.^ V#@;P\>?.BJ
M"OO99R#K  +*/U)0V&FFV1MT,XI9,M"E],D(M0">D_G_%0#19GZ(-E"A.EL,
M?/*C@0,P@PA;^MNFJ9CE>=LFO&WG;%%YC+^M/:1><TL0\@K+'\WAY!O[:?1M
M1:>^="F]692@,U6 ?&S3LOSRH'U5VBW#-D"TS#Q]850%M/<)@S=_8>;T;,>=
M\G;?CQ.GOKS"T0)^KBQ/MYX-X'9=UV6>F]61LRX[<A;4D;-Y2!TYO][>7OQQ
M=7U-'3FO;AZ[-U^OOESWE.[#0^_QX7@[<R[L@Z"<\(4/\:6RSOL19/RY/9[H
MUE09 0=W6!\)FX^!P[='GIXN_-;.90@V>$W)W6B<+9I#<Y+[($02RE#808OQ
MS7TU/)"PGJL\^:YA\=P?D+^N@=^Z]+50SN[@M'37 _)_1N%\ID1/$Z0W;B:*
M:+B7;EF^;LY.U8"+#(=$.BAV7HZ=NL%:R_P[5<FW4^(JWS-,XS_8R597_H:%
M&J T@8"&9>OFU#6 Q>%F#HS4#;5L3^PGBA6 ND+[8&,K;4./OO.9<D7*[L1V
M792'L)LZ:+6^![)0Z8] 2@*=X:D83M\?NQXF.\,:_O('M-'P1U" ==?UQQ,Z
M%!4N%@$Q5)Q,&VX 6A,<JCT&L?W*]!]TD/ KWV(_4?V [UV@2F,( @X. :"-
M?<SIJ<&QH@(&VP#W!)7%-SWZ/=S^+PX4>&K:>8WUJ4+;P7^,-TXZ?7A;1[PM
MM12F/=BU6K0])C[3>12N]!PU-X^\K4YO&[2,/L*.T0_]$1OX)KL=XH!#CUT#
MOUA0<:FI<[)VVY MI+?J>6]4WT*GU!*V0*5,<.5<=YPI0&-KS5#?4C_<$IYR
M)$M2'O%Q'O%,F.W\A ^K6?O;$#6'VY2[.P:8>.5HRRV143)D1 J7)#XD/N;P
M05:<"D\L"?LH<88PEX)[S1"&P^R2(S$Z@T;A'M'C44^+NWG*L(*"E@XG$MS_
M:2'MHNS;(_=>[GUQ>U_B+-5TUKW:+?.S\>49J^>^"R\)[-MA)NEF[LB8E+W[
M[D$-6M"J:1E2*1[M+]-O^E^V<XYV.4]/%V=U'SVJ/-GI*0_9J)E$2VW7]MC(
M3D(SS]-3:[>K2?EL9<%FQ/$9M1[7'=6NUK2=5A(5V;G@#> T%:9I3?WV#=,-
MJMLJL@CV0/2D1T<?,,*$2PDJ'OX=;O&C[+I2"8K[,F@[J8QA'=I^#(^D:PWH
M+S=X7'M4D+2JVJ[N6.:474$J!1[3=:*T(7W[!V2Q6E%-;=5V/,:OQ%I1*<"9
MBLVD=H+EP>;ZJE!'K73*WQ-=>HQ./M_I7O$#FF0_A"WT0ZBF#0Q<A5F((]^G
M)J4VJZV2]4*0L"]I0\)J4D/"_>&^0(4-VX(TR] 31/;DW#L)I%) VO2_W5/
M!FT%U'JS;'Q?>LWF=,5J:ZG7S/9TL^0.LK?=1*2:U#$R5TWGEC2]>E6MMFLE
MZR,B<;L/W*8J>;64J'H95#5J<JI6*_OMH%XK6%N3*"Z4^]92PN][T+9JFEII
M;=,;O'X/IRVXYG*4E&2GR.6_(B43KLC''/="#E;WWF]2=E4F99<F.?5PMD?N
MO=Q[F90MD[*/,:.PEI116"U)1N%&2=F=71N=A^@JV3<TTUT;:2-\]XW-8ETD
M#;5=ETG9Y<5I*DR3\N3* M,-DK)K:JVYXY2XHS!Q95+V\>09UE+&%I<@SU F
M91\A'M-UHJ1<MO( LM@<GZI:[^QX]&*)M:)2@#,5FRD#<$N S0VR;RIJ;;?3
MUV16=IFRLM\@*2<ESJU#RF\P95JJ.06H.2D#? \[=1D0V=YQ@8_4:=9GA/6D
M]*K] 7&3#.)&79;8'X(*<^N-F"/+RDI?7%!/FX&V"FN@ Y^_:H\:4ZVZWV1-
M66)6)A)(U=/J186/MT$#Q3JC:IHL.),$D243B@I9;X,>-E >RR80I$=,UIX=
M3?5#/26!8/<*((@Z'+R^U<"+K#T[%-RF:W\IT?$R:&WH:U-;U9VZ/63I6?E
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
MIV?=&=!E,\;XW[^TJUKKHQMAH4*((?.+CFL.)8Z0U /4CB+2&L??HJKG.\0
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
M?H;+WRXX@ZVA[PB;;NS5.-F Z':!<0SPB)#TQ![@\BP&K,'5'6 RMN*PH<F
MKO")$\=^XE)IBLP).)GNFY[R-*5O^?8ZL$_XM2, /I[H%BRK@$.?P(?,$O0.
M-X>W?W9LUXULA'NF9'JXECPCC73O'#;1C8'"?B*YB\.U.3W#GS+?*QJ 2GQ
MM]]W$,31Z]XZB[" YOJZXTR1CO4Q@LN-B43Z _O;![B;"&"5R\3(X3@ 9(.(
M&(FOW^?WF.A3_(@^F=]U-4*W'@#\"> R =C_!.7*BY'< /X!\L C<D>VXYT"
MH,:@S7D^G"\L$[YP\: #_=+E-)#P5N)JU'L=^Q4^A]?D9V\:%MU+4&QD)6["
M4@S/)?Y'3"L.\"?=A?>$NW)>MFO@).EVGP;&RV=< K^4KL*/Z+O8Y3$]?L G
MMU0T^']DB,MR/7JFX;M=:_ [&\ BG[NH\]"!S[)4'N$17TS0IDZX(5%M-#MU
MK76B,-"^)W!ON T[$=M&BJNP5/[G!)VRH-8(A3C\NSO1^\'?Y[3M2N77.0=]
MA>S)3T(SG@4PYD,3GCWYF)Q"0AN_++RP<*0JU_!!EL%6#3_.:_?K4.VGI\]I
M.J)V1B)LZ9@(\2*Z[]G[?Y&+WOW5O[J/5__J*5<W#X_WW[_U;AX?E.[-A?)[
M[^+KU<U7I7L.7U\]7O4>/LR]4XJ5<V2,&J2MPG10AF8:F<*(]9",M5&*O8X,
MN""B#<!)L1\NLBS[R=/ABIE"-@+Z9 &K1A;I.4PG_42-W8',8!/,H('=Y\2M
MP%^!X9M<X1D9H#0\,>^5,8MNBO>*,&-B\_0P6*?'QF[,-D%.2NH1[)+^S,@R
ML9_^8MQ2(G/,0[[Z3 L!@Q[>WM-_T'IAD?PEX HP#<CHYFN/R09^_R>&O^'K
M4)41;$#P^_AZ__N7=E5K?705-ASR55B@H>'FVL,AJ"U>[-$#?O-7 ][FB9%B
MXR+_!^GA3OC/8>?P-1SF13\3&BH<IMMWC F9-6*YH/F.[ '^;<QT8)=\?;'E
MH( S4/6V^WQQI..X*,5H:_" HHH[G#\^&O3@OC(T0'B".34VA#(*VXIJ%2 #
M]9[(7O*C@_L")O7PO:/WA0.< Y20O0%X=-.U9P@2VP,(> *M0>B6_'?AML.[
M,+X=I%S@?^#?SS8^'F2K 3]^'3'2.>97$VK5ODLT$9YN_)T<5.*?1["><$_G
MCI>[H^C0P]<CA2@*8_ZBLUN RA\Y19?%+E;@M(1ZSY?VW0)J,X$A#)1GI,MW
M(!G=]_B^\QL::"@Q[?3!@_^(XQO2;CML! HS+N0*#) Q.U.NAO!L?/  3:DQ
M0&@@MBC*0N#[%$EBV1XWAN9W3.5F!YIRGC)"'#!2? !I2 >+.TPO$^<LM">@
M5#K\=V0V(BORV2)S0NT=KB8"XLJ@[D5?(T9PN]?608MB/XD(^0>D<W'C\W].
M[KY>/MZ'>DG4I]LG!CY+L0!=1:@]\3N,AJ>@KX9?S7^'&I!R]_7F^[?4IR2G
M.2SS0IY\%@]3E,O3X,%I6*D*UU2PQE#'G/M+[,^C4/NZZW[MG7ZY[W7_>=J]
M?.S=@WIBONI3-_!28QZ&Q6)[]1%P@E[Q#TH5':(BZ^27"OT/?K>0D"*^.ODM
M\91^OT@^)?2P%G-&C[?GU\"BPZ< Y">F/L5=1 /D] F5XKC;GQX^NZOR"6C+
M0?7\%\_NG\30_2HVP[! W\:$%7[@>,7\AV%N2_SC''&%.1TP(;CR2 H[L27
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
M>),NKM0%/0C_$KCU;H!_<8"O';YH9)5V957#=2K+'=Z'OCF+N=YSM97QJC5
M(Z_O,FULB\2<,0>8R%XCK0FQ^VR1BWV&4BS 4A6+0]'3?ZJ9D.QHNX(D:>>1
M$K:TJM?OD=>[85XW>,%K*C"[P6ST]4M=M<SX3S96DVL+CGO7,B@\ <1Y:JS!
MK D%/OY,/R!9,G'LOWCF(9%EY&T#Q<]^ JG)E8/,6O).2@QU9PQP]@[BT]OP
M#=8$3OVLN3&YI<1"#WIG,F+^\R05I"X/=2,H@<+<9M0RN7S( ;*EB9"[V\I+
M6#[E2MP.9T)WS3UL9,G6'.A*TLIVC*XBMZ1^MM@M)056QVN6/%+5OX=E=88]
M,/HA5T;[C4@E?R<+L,HWBGH4#1B0YG?BM<2GY_!2A36O2$_WJ5:2!@(E=. Z
MN,W(IZUGL91J)2GDF-"6Z2CWA_PIY%<2_I 2E 2J.;6Z;/U/$U?&6"AYE7CR
M,!N<ZB_,T9\9+Q+"W$:'ERFXW",V9CHFT,QID$D:8T:.6+62I!<5QXBBL954
MF]D?3\@U\AW>\%PWL1 +BU47]*0+L2'8&7>=\$J=M,E%Z?8K/[>TG4I2>XKC
M4N7<J7;B3AV(??5V5)2H_HZ)E(8U<^)/;-O$8#B;Z-1P!YV4/CF]J1<!EAY&
MC('06\V=X 95X7G".1G:"]RQR3D3V:V<%SG45"Q?\24\^UGD=XJ*HL@J1@:P
M/Z<_$FPQ[.>TP!]GWBV'=SC C #?L? -YHV:-.+6<J:&[Y_.DP5Q3^S0->S'
M(VS'/>W"[;P5L%H<NG66&.8_#/(_7H+_]/3YQK9.__;A&FII-@.E\D ]/]PW
MFCW('(<2A,884Q%UI0M90?9P:/0Q>Y":Q01UOR-@+,#KPM_"1[.$A%B"@8B@
MIE?E@GG3Y('^_=9<K" M4_;O23<QJ.5FA0*J\U->8]KD%WZ7AQ%C\7D$Y)!&
MSH6,_%K$.HV@1>,RG@LT$)+ [!)! (F)/LF&#KWT>>2=@Q5,S\.N@1O';VI9
M#I5L@W!^GE1,_WS;>YOA'5[HZ$A]:2+]%7FD+-"?K,%"Z,R<;=SQRA6:XA!T
MP>3)D*8YGV'IADVWCM DS_1]5Q.;9>=MULO[ <0H3C1:7;<.+3N@EOXV[5P^
MN)V]3490-8?7K-K)Y37;T1MIZT1GJ- /;N*@[>4P'@P,LI*2<J"1+(^_8>JL
M;.QV&)4H]WR'T ARJ3KW"UJP=_J4VL8GEYAILL2LJ!*S^B&5F#W\WKWOG7[I
M/O0NE//;;W>]FX?NX]7MS?&6FJV<N)K"6VM)$9M4V;>060_T#YK [;!+'(^J
MC*\LS)2'OY'S9/6*8NHL8%LLH7DZSY/E/0.,X#'<HJ'X0JP*9 !<O^_9CJMF
M%3',*H'I!93P#<CJ5N--2D71&7;!)O.)K\:>A+G[867XK %"O%<I_P6&&>&=
M1=DX>L%<$AX@!L+L$<SH"C]8=KO[A^\B!^SNH>N>P>K#=-G%KE@Y\IBKM9K8
M?Y[';%@I^YYC;RNMM+WEU?#!#K,7P_9=$)//#F >=X'O,R^KC_:+D\V(]M*,
MJ":;$<EF1,??C(@* FS3I"9Y"E<C77^,.OQ_F&@C>,HC*S'G6F!KA[Z(=Q0*
M 9X&7,M]_V$?3&O#L0;]$1OXV $Z**)[X 48,]4\JKQWPP: M\/[,/&4QS=(
MHT_6WZN)^OL:"KP@1C"J"*+)&OUJ3#+# )@]\7=&#?3"9RZ9*=IHT#C1/<P4
M39ZRMOG=M82;PQNC^O _)UHE6V!M:7S:DG&_P;)KM91!JYLQ%?%V*]A=ZWWU
M;^R4UB./7>"54P*'6_1?2VRY#39_?D :S=M=AH=PVJXDEG1BJ9:55K02D4KH
M+=X[KB4N2H:+JL2%Q,72:-#><9%SZOSJ0B^'Y,K&:OXK:KMYS'$O)"<8*G7
M0:V]!PUHF6\_>WINW/^0, PM_*>#E\<,K-,.D30:B^1>Q9D\:8&(4HZ;WN\8
MZ?3QT'DGC/(:4IIOA9&W6!(*GL[M,/?85>$58(-DI\%\3';%B>AJI=K:XBCH
MHYA_7FI )J5@)!0.'00@ZPC(6G4QS58"\G  F91%DU"I=1" Y!RRLCAE>6>
MW)K6>Q2*S@,S33 @5.696<S13='.0PQ$<OAT9A%7*%8/2K1=BB?]?(9C#@5[
MVTPA]TI3>4=2OMJ*VI6 Q%<.B*XUZ,;0()C!_OE*56W6%_,5M\A7=H1821?%
MTT4]J51^127O<.BBUE[,?)5T(>DB@2Z2<O!6U#4/ARZJVD[UT!R(E5XX^$=K
M+]-.J83DX-QO\Y19 \H<V#[FDLR1YCZ-T/RK3&4@^289[)'L:VJSM4UQ.$_D
M-0S!'(63Y$WA.*E@/V_ITHYPW*I('$L<9^ X:1)*WH*U'>&XJBT6V.X7QRD%
M.@F%:<=8M9-C_E]U/G2W9*)BXCS0<RH:H2*,<SZMF\_^O&?849T-+FWGTO=\
MAUVYKH^EY^L.!6U5JVJCM:CGST\%C4T C8]+'-)"%$.L)#*,?'[X0V(MT%[[
MF6"W6M<?!_,-(R4K5)]#S?BQ10^-W 8,,$\QV0NC43:I9Y_2)SQCILQJYSX;
MC/(O6"JL^W9X.WL)? ?J9<,&18Z:.=PB_(6I=[.*+5[Q]-TR1!,"V%G:)H0T
M'8+2I?*FM]+7)9UJ8_5U[&_?\*9P"6RF3X6_. JG/T+:QH*WL-XMJ,ZC@C$B
M*M(,L!#/ 2+'N^L*5F3SSCH6U2M28@EG1$")LV\]?/VS^ .H%988.B%*/D11
M&C6AX>1,8P*(Y'E9-_:8"&=JT-+.^,U&.K[N# ?BCA-]"HP"Z9L7[AUP4XI5
MZFB2.#IL?K#WO. 3<'! =3/$<V=%,]]%W[895R"F0#RA:PTB'($8 N<'7?':
M5,*27#!3DP4S6_6]-=LRI[?,.;TW(1^/,^MWVOMRI/I*N)0)+G\$;2:5KN@S
M^97TA0OL,8E]UA5JM%X.Z&P[2SR-M\GD[-*'A?CQ[35G*=!JYC5E4GFCA8@*
MK\DI=?BH!)'D#(]BVJ03TAC#-G\YU$S\G*N9"_'@1+_1DCIO!_CG,X6BOTP7
MNC31_7MDPEW-+#CJP?<XTJU;WBSEQA8PXL)\77]3M5)1.]7%$:LRX?9@$F[K
M:9W8BT3X]X<+N')?. ^T$*&#D J"&D@XZ&5=$JA5SMI[S#@O<8+O[H3E\AR*
MN) 4G8VD4-R09>3,LSU@^4C\P;VR>/>4=7F#5JNK]<YBV\HW+1Y+#^]&SLE2
M!R\<XR#?FH2LML_JBR.*RB8AC]N<7"XAE]B3?42L*65E'K2]2^4F^1I]'K*P
MO+2=(3-@K9O+2[61,"1IJZSBO03W^I(R7_[KX4M*@7#?8>Y6#<F=5JY(0W)M
M0U*(S'?5][(LM!1E/NDB..<\L@,6P?\B0&XJ?SL-M5XO0_5<<4*Y$(I:"<4E
M()L,J9V4)7V,4CM.%-L4W%H9B$8:O5N)H=9*;@+G+YW8.U\JILJCT4B9BW?
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
MJIDH)-7MH:DC$SH[VSHNSI#X(?N?I6DILQ6-@:4&.M,D9?S(.8$]V2MDZ<C
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
MDQALRHG]L')N\F4[#*>-%^XD]A7>8C%(Z"S<KK>+]6KG,<#9Q@!WPI)H"F4
MJ=4M.,,Z!U*F0 I+=MDL&$AM"J2B:W55)/%([KK#NX)=4P-+)K:/&1>ZJ=B'
MCI;T$Y,C2;0P%/?\<2\%(OU>85^N[M?BH87<9J"N;/A";CWG2" G/)@]8).$
MA&C/5X;^,B;8&M/@!KAV[((OX>HDIJ@JDW:.BL<O9TSZ(/5(-O1"V""NV9!&
MCR^"#4**6CB<#9P-&VSHA[!!6+,AS6:D$#:P3 9NRMIARL*:G,B(E4Z&M'*7
M(0<>2I^!2AH17U"LX:/78D>"Y ],3H7,>QD%\VY8(J_*&8HYS#G,HV$>%LQ<
M.3-V_C"O4C*5G -%9!WO"+OP$H_0M!9.5@NRG] U&+<5,6F:- L%37]"O)$M
MW9)4)#F9W4&OW.F>3)-=V#[-KDNSG=R=G*Y&],YZQ>HO;'?P!7Z;FU_17'\E
M>4/J"&"WE$@.#;+I,8$82U5V4F6@&6R G(PETZ5A8,V"-R$E54D&D1,T@HL
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
M(J;&S5<H(V"1E1PLB>%01#.Y:2B;W8C4),(B"-X7?3G4G"VM5I[1_2RC[]!
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
M*62&'-+#0\8@>Z$AN8[N03CIH.<.94Q:UFE;$U";X94N #S0/4V1OJ*Q9(
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
M<2DMDP>K?[:>='E%/DDP#6?H+P@AM]-WRQ=L*%/GRU ][/>-'O[^==TWVK6
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
M]O\!4$L! A0#%     @ 4H1E6*^3&3Y=X0  4/T   <              ( !
M     &$P,2YJ<&=02P$"% ,4    " !2A&58;2]\O[("  "S#P  #0
M        @ &"X0  97A?-C R.#$R+FAT;5!+ 0(4 Q0    ( %*$95@>&2DO
M'0,  /@)   -              "  5_D  !E>%\V,#(X,3,N:'1M4$L! A0#
M%     @ 4H1E6(!3PZDV"   7S8   T              ( !I^<  &5X7S8P
M,C@Q-"YH=&U02P$"% ,4    " !2A&58/?NUI$\(  ")-@  #0
M    @ $(\   97A?-C R.#$U+FAT;5!+ 0(4 Q0    ( %*$95CW<?N*=@0
M %@2   -              "  8+X  !E>%\V,#(X,38N:'1M4$L! A0#%
M  @ 4H1E6*),(;F7!   .Q,   T              ( !(_T  &5X7S8P,C@Q
M-RYH=&U02P$"% ,4    " !2A&5852.CT1\4  #(<   #0
M@ 'E 0$ 97A?-C X-C(V+FAT;5!+ 0(4 Q0    ( %*$95@1>.0"%QT  /5P
M 0 1              "  2\6 0!N=W!X+3(P,C,Q,C,Q+GAS9%!+ 0(4 Q0
M   ( %*$95C/N%@4/!0  !%. 0 5              "  74S 0!N=W!X+3(P
M,C,Q,C,Q7V-A;"YX;6Q02P$"% ,4    " !2A&587)H$O))P  #$T0D %0
M            @ 'D1P$ ;G=P>"TR,#(S,3(S,5]D968N>&UL4$L! A0#%
M  @ 4H1E6#QM>U%:G   +WD( !4              ( !J;@! &YW<'@M,C R
M,S$R,S%?;&%B+GAM;%!+ 0(4 Q0    ( %*$95CYV;IQL78  ,*4"@ 5
M          "  395 @!N=W!X+3(P,C,Q,C,Q7W!R92YX;6Q02P$"% ,4
M" !2A&583A0DC&IZ @!!]!X %0              @ $:S ( ;G=P>#(P,C,Q
B,C,Q8U\Q,&LN:'1M4$L%!@     .  X 8 ,  +=&!0    $!

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>117
<FILENAME>nwpx20231231c_10k_htm.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:country="http://xbrl.sec.gov/country/2023"
  xmlns:dei="http://xbrl.sec.gov/dei/2023"
  xmlns:ecd="http://xbrl.sec.gov/ecd/2023"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:nwpx="http://www.nwpipe.com/20231231"
  xmlns:srt="http://fasb.org/srt/2023"
  xmlns:thunderdome="http://www.RDGFilings.com"
  xmlns:us-gaap="http://fasb.org/us-gaap/2023"
  xmlns:utr="http://www.xbrl.org/2009/utr"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <link:schemaRef xlink:href="nwpx-20231231.xsd" xlink:type="simple"/>
    <context id="d_2023-01-01_2023-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="i_2024-02-23">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <instant>2024-02-23</instant>
        </period>
    </context>
    <context id="d_2023-10-01_2023-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <startDate>2023-10-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i_2021-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i_2021-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i_2022-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:MachineryAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:MachineryAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilityMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:AccruedLiabilityMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_BalanceSheetLocationAxis-AccruedLiabilityMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:AccruedLiabilityMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:OtherLongtermLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:OtherLongtermLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-10-05</instant>
        </period>
    </context>
    <context id="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-10-05</startDate>
            <endDate>2021-10-05</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-10-05</startDate>
            <endDate>2021-10-05</endDate>
        </period>
    </context>
    <context id="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-10-05</startDate>
            <endDate>2021-10-05</endDate>
        </period>
    </context>
    <context id="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-10-05</startDate>
            <endDate>2021-10-05</endDate>
        </period>
    </context>
    <context id="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-BacklogMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">nwpx:BacklogMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-10-05</startDate>
            <endDate>2021-10-05</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">nwpx:ParkEnvironmentalEquipmentLlcMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:MachineryAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:MachineryAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentUnderFinanceLeaseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">nwpx:EquipmentUnderFinanceLeaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentUnderFinanceLeaseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">nwpx:EquipmentUnderFinanceLeaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-ConstructionInProgressMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ConstructionInProgressMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-ConstructionInProgressMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ConstructionInProgressMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_StatementGeographicalAxis-MX">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:MX</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_StatementGeographicalAxis-MX">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:MX</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksAndTradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:PatentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OtherIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-08-02_DebtInstrumentAxis-InterimFundingAgreementifaMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-08-02</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">nwpx:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-11-02_2023-11-02_DebtInstrumentAxis-InterimFundingAgreementifaMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">nwpx:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-11-02</startDate>
            <endDate>2023-11-02</endDate>
        </period>
    </context>
    <context id="i_2023-11-02_DebtInstrumentAxis-InterimFundingAgreementifaMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">nwpx:InterimFundingAgreementifaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-11-02</instant>
        </period>
    </context>
    <context id="i_2021-10-22_LineOfCreditFacilityAxis-WellsFargoBankNAMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-10-22</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_LineOfCreditFacilityAxis-WellsFargoBankNAMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-10-22_2021-10-22_LineOfCreditFacilityAxis-WellsFargoBankNAMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-10-22</startDate>
            <endDate>2021-10-22</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MinimumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">nwpx:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MaximumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">us-gaap:RevolvingCreditFacilityMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:LineOfCreditFacilityAxis">nwpx:WellsFargoBankNAMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">nwpx:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_BalanceSheetLocationAxis-PropertyAndEquipmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:PropertyAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_BalanceSheetLocationAxis-PropertyAndEquipmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:PropertyAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilitiesAndOtherLongtermLiabilitiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:AccruedLiabilitiesAndOtherLongtermLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_BalanceSheetLocationAxis-AccruedLiabilitiesAndOtherLongtermLiabilitiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:AccruedLiabilitiesAndOtherLongtermLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_BalanceSheetLocationAxis-OtherLiabilitiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:DeferredCompensationPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:DesignatedAsHedgingInstrumentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:ForeignExchangeForward1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:DesignatedAsHedgingInstrumentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-NondesignatedMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:ForeignExchangeForward1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:DesignatedAsHedgingInstrumentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:ForeignExchangeForward1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:DesignatedAsHedgingInstrumentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:The1941InterestRateSwapMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:The1941InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentsGainLossByHedgingRelationshipAxis">us-gaap:CashFlowHedgingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:The1941InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentsGainLossByHedgingRelationshipAxis">us-gaap:CashFlowHedgingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-04-03_DerivativeInstrumentRiskAxis-The296InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:The296InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentsGainLossByHedgingRelationshipAxis">us-gaap:CashFlowHedgingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-04-03</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-The296InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">nwpx:The296InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentsGainLossByHedgingRelationshipAxis">us-gaap:CashFlowHedgingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">nwpx:PropertyAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">nwpx:PropertyAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">nwpx:PropertyAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:InterestExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:InterestExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:InterestExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_HedgingDesignationAxis-NondesignatedMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_HedgingDesignationAxis-NondesignatedMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_HedgingDesignationAxis-NondesignatedMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ReclassificationTypeAxis-ReclassifiedToNetSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationTypeAxis">nwpx:ReclassifiedToNetSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ReclassificationTypeAxis-ReclassifiedToInterestExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationTypeAxis">nwpx:ReclassifiedToInterestExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2022-09-22">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <instant>2022-09-22</instant>
        </period>
    </context>
    <context id="i_2022-09-02_SubsidiarySaleOfStockAxis-AtthemarketOfferingMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsidiarySaleOfStockAxis">nwpx:AtthemarketOfferingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-09-02</instant>
        </period>
    </context>
    <context id="i_2023-11-02">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <instant>2023-11-02</instant>
        </period>
    </context>
    <context id="i_2023-12-01">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
        </entity>
        <period>
            <instant>2023-12-01</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ShareRepurchaseProgramAxis-ShareRepurchaseProgramMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">nwpx:ShareRepurchaseProgramMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-DefinedContributionPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">nwpx:DefinedContributionPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-10-06_2021-12-31_RetirementPlanTypeAxis-ParkusaDefinedContributionPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">nwpx:ParkusaDefinedContributionPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-10-06</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">us-gaap:PensionPlansDefinedBenefitMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember_RetirementPlanTypeAxis-NonqualifiedRetirementSavingsPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:OtherLongtermLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">nwpx:NonqualifiedRetirementSavingsPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember_RetirementPlanTypeAxis-NonqualifiedRetirementSavingsPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">nwpx:OtherLongtermLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">nwpx:NonqualifiedRetirementSavingsPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingGeneralAndAdministrativeExpensesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingGeneralAndAdministrativeExpensesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingGeneralAndAdministrativeExpensesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:RestrictedStockUnitsAndPerformanceStockAwardsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:RestrictedStockUnitsAndPerformanceStockAwardsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:RestrictedStockUnitsAndPerformanceStockAwardsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:RestrictedStockUnitsAndPerformanceStockAwardsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:RestrictedStockUnitsAndPerformanceStockAwardsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:DirectorMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:StockAwardsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:DirectorMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:StockAwardsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:DirectorMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">nwpx:StockAwardsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i_2017-01-31_CounterpartyNameAxis-LowerWillametteGroupMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CounterpartyNameAxis">nwpx:LowerWillametteGroupMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-01-31</instant>
        </period>
    </context>
    <context id="d_2017-01-01_2017-01-31_EnvironmentalRemediationSiteAxis-PortlandHarborSuperfundSiteMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:EnvironmentalRemediationSiteAxis">nwpx:PortlandHarborSuperfundSiteMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-01-01</startDate>
            <endDate>2017-01-31</endDate>
        </period>
    </context>
    <context id="i_2017-01-31_EnvironmentalRemediationSiteAxis-PortlandHarborSuperfundSiteMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:EnvironmentalRemediationSiteAxis">nwpx:PortlandHarborSuperfundSiteMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-01-31</instant>
        </period>
    </context>
    <context id="i_2014-06-30_LossContingenciesByNatureOfContingencyAxis-PortlandHarborNaturalreSourcesTrusteeCouncilMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LossContingenciesByNatureOfContingencyAxis">nwpx:PortlandHarborNaturalreSourcesTrusteeCouncilMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2014-06-30</instant>
        </period>
    </context>
    <context id="i_2023-12-31_OtherCommitmentsAxis-CapitalAdditionsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:OtherCommitmentsAxis">us-gaap:CapitalAdditionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_StatementGeographicalAxis-CA">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CA</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_StatementGeographicalAxis-CA">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CA</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_StatementGeographicalAxis-CA">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CA</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">nwpx:OneSppCustomerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">nwpx:OneSppCustomerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">nwpx:OneSppCustomerMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredOverTimeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredOverTimeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredOverTimeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2024-01-01">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:typedMember dimension="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis">
                    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>2024-01-01</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>
                </xbrldi:typedMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2025-01-01">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:typedMember dimension="us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis">
                    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>2025-01-01</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain>
                </xbrldi:typedMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_BalanceSheetLocationAxis-OtherAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_BalanceSheetLocationAxis-OtherAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-DomesticCountryMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-DomesticCountryMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedDefinedBenefitPlansAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:ForeignExchangeForwardMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DerivativeInstrumentRiskAxis">us-gaap:InterestRateSwapMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedGainLossNetCashFlowHedgeParentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis">us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:EngineeredSteelPressurePipeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:EngineeredSteelPressurePipeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:EngineeredSteelPressurePipeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:CorporateNonSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:CorporateNonSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:CorporateNonSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:EngineeredSteelPressurePipeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:EngineeredSteelPressurePipeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">nwpx:PrecastInfrastructureAndEngineeredSystemsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2023-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:CorporateNonSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:CorporateNonSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-12-31</instant>
        </period>
    </context>
    <context id="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="i_2023-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-12-31</instant>
        </period>
    </context>
    <context id="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:AllowanceForCreditLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001001385</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <unit id="USD">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="Share">
        <measure>shares</measure>
    </unit>
    <unit id="NonApplicable">
        <measure>thunderdome:item</measure>
    </unit>
    <unit id="USDPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <unit id="Pure">
        <measure>pure</measure>
    </unit>
    <unit id="Year">
        <measure>utr:Y</measure>
    </unit>
    <unit id="CAD">
        <measure>iso4217:CAD</measure>
    </unit>
    <unit id="EUR">
        <measure>iso4217:EUR</measure>
    </unit>
    <dei:EntityCentralIndexKey
      contextRef="d_2023-01-01_2023-12-31"
      id="thunderdome-EntityCentralIndexKey">0001001385</dei:EntityCentralIndexKey>
    <dei:EntityRegistrantName
      contextRef="d_2023-01-01_2023-12-31"
      id="thunderdome-EntityRegistrantName">Northwest Pipe Co.</dei:EntityRegistrantName>
    <dei:AmendmentFlag contextRef="d_2023-01-01_2023-12-31" id="ixv-14273">false</dei:AmendmentFlag>
    <dei:CurrentFiscalYearEndDate contextRef="d_2023-01-01_2023-12-31" id="ixv-14274">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentFiscalPeriodFocus contextRef="d_2023-01-01_2023-12-31" id="ixv-14275">FY</dei:DocumentFiscalPeriodFocus>
    <dei:DocumentFiscalYearFocus contextRef="d_2023-01-01_2023-12-31" id="ixv-14276">2023</dei:DocumentFiscalYearFocus>
    <ecd:Rule10b51ArrAdoptedFlag contextRef="d_2023-10-01_2023-12-31" id="c107875783">false</ecd:Rule10b51ArrAdoptedFlag>
    <ecd:NonRule10b51ArrAdoptedFlag contextRef="d_2023-10-01_2023-12-31" id="c107876477">false</ecd:NonRule10b51ArrAdoptedFlag>
    <ecd:Rule10b51ArrTrmntdFlag contextRef="d_2023-10-01_2023-12-31" id="c107876478">false</ecd:Rule10b51ArrTrmntdFlag>
    <ecd:NonRule10b51ArrTrmntdFlag contextRef="d_2023-10-01_2023-12-31" id="c107876479">false</ecd:NonRule10b51ArrTrmntdFlag>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107876407"
      unitRef="USD">121000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107876408"
      unitRef="USD">369000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i_2023-12-31"
      id="c107877899"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i_2022-12-31"
      id="c107877900"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i_2023-12-31"
      decimals="INF"
      id="c107876409"
      unitRef="USDPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i_2022-12-31"
      decimals="INF"
      id="c107876410"
      unitRef="USDPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i_2023-12-31"
      decimals="INF"
      id="c107876411"
      unitRef="Share">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i_2022-12-31"
      decimals="INF"
      id="c107876412"
      unitRef="Share">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107876413"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107876415"
      unitRef="Share">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107876414"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107876416"
      unitRef="Share">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2023-12-31"
      decimals="INF"
      id="c107876417"
      unitRef="USDPerShare">0.01</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2022-12-31"
      decimals="INF"
      id="c107876418"
      unitRef="USDPerShare">0.01</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2023-12-31"
      decimals="INF"
      id="c107876419"
      unitRef="Share">15000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2022-12-31"
      decimals="INF"
      id="c107876420"
      unitRef="Share">15000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2023-12-31"
      decimals="INF"
      id="c107876421"
      unitRef="Share">9985580</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2023-12-31"
      decimals="INF"
      id="c107876423"
      unitRef="Share">9985580</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2022-12-31"
      decimals="INF"
      id="c107876422"
      unitRef="Share">9927360</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2022-12-31"
      decimals="INF"
      id="c107876424"
      unitRef="Share">9927360</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax
      contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107876430"
      unitRef="USD">-102000</us-gaap:OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107876436"
      unitRef="USD">41000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax
      contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107876442"
      unitRef="USD">14000</us-gaap:OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107876448"
      unitRef="USD">-95000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107876454"
      unitRef="USD">-213000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-4"
      id="c107876460"
      unitRef="USD">-110000</us-gaap:OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansTax>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107876466"
      unitRef="USD">45000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107876472"
      unitRef="USD">134000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationTaxParent>
    <us-gaap:ProceedsFromIncomeTaxRefunds
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107876473"
      unitRef="USD">145000</us-gaap:ProceedsFromIncomeTaxRefunds>
    <us-gaap:ProceedsFromIncomeTaxRefunds
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107876474"
      unitRef="USD">23000</us-gaap:ProceedsFromIncomeTaxRefunds>
    <us-gaap:ProceedsFromIncomeTaxRefunds
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107876475"
      unitRef="USD">79000</us-gaap:ProceedsFromIncomeTaxRefunds>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i_2023-12-31_RangeAxis-MinimumMember"
      id="c107875832">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107876484"
      unitRef="Share">0</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107876485"
      unitRef="Share">0</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <nwpx:NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables
      contextRef="d_2022-01-01_2022-12-31"
      decimals="INF"
      id="c107876486"
      unitRef="Pure">1</nwpx:NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables>
    <us-gaap:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred
      contextRef="d_2022-01-01_2022-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-5"
      id="c107876487"
      unitRef="USD">1800000</us-gaap:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentConsiderationTransferred>
    <us-gaap:Goodwill
      contextRef="i_2022-12-31"
      decimals="-5"
      id="c107876488"
      unitRef="USD">55500000</us-gaap:Goodwill>
    <us-gaap:ShortTermBorrowings
      contextRef="i_2022-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember"
      decimals="-5"
      id="c107876489"
      unitRef="USD">10800000</us-gaap:ShortTermBorrowings>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="i_2021-12-31"
      decimals="-3"
      id="c107876518"
      unitRef="USD">0</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <nwpx:NumberOfNoncontributoryDefinedBenefitPlans
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="INF"
      id="c107876182"
      unitRef="Pure">2</nwpx:NumberOfNoncontributoryDefinedBenefitPlans>
    <us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets
      contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="2"
      id="c107876519"
      unitRef="Pure">0.07</us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets>
    <nwpx:NumberOfInactiveStockIncentivePlans
      contextRef="d_2023-01-01_2023-12-31"
      decimals="INF"
      id="c107876233"
      unitRef="Pure">1</nwpx:NumberOfInactiveStockIncentivePlans>
    <nwpx:PerformanceShareAwardTargetLevelPercentage
      contextRef="i_2023-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="0"
      id="c107876257"
      unitRef="Pure">1</nwpx:PerformanceShareAwardTargetLevelPercentage>
    <nwpx:NumberOfMajorCustomers
      contextRef="d_2022-01-01_2022-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107876534"
      unitRef="Pure">0</nwpx:NumberOfMajorCustomers>
    <nwpx:NumberOfMajorCustomers
      contextRef="d_2021-01-01_2021-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107876535"
      unitRef="Pure">0</nwpx:NumberOfMajorCustomers>
    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
      contextRef="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2024-01-01"
      id="c107876356">P1Y</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1>
    <us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
      contextRef="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2025-01-01"
      id="c107876358">P1Y</us-gaap:RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1>
    <us-gaap:OpenTaxYear contextRef="d_2023-01-01_2023-12-31" id="c107876387">2019 2020 2021 2022 2023</us-gaap:OpenTaxYear>
    <nwpx:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107876544"
      unitRef="USD">482000</nwpx:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit>
    <nwpx:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107876545"
      unitRef="USD">592000</nwpx:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansTaxExpenseBenefit>
    <nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107876546"
      unitRef="USD">12000</nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax>
    <nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107876547"
      unitRef="USD">-33000</nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax>
    <nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107876548"
      unitRef="USD">79000</nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax>
    <nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107876549"
      unitRef="USD">213000</nwpx:AccumulatedOtherComprehensiveIncomeLossCumulativeChangeInNetGainLossFromCashFlowHedgeEffectTax>
    <dei:DocumentType contextRef="d_2023-01-01_2023-12-31" id="ixv-16949">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport contextRef="d_2023-01-01_2023-12-31" id="ixv-16950">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate contextRef="d_2023-01-01_2023-12-31" id="ixv-16951">2023-12-31</dei:DocumentPeriodEndDate>
    <dei:DocumentTransitionReport contextRef="d_2023-01-01_2023-12-31" id="ixv-16952">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber contextRef="d_2023-01-01_2023-12-31" id="ixv-52">0-27140</dei:EntityFileNumber>
    <dei:EntityIncorporationStateCountryCode contextRef="d_2023-01-01_2023-12-31" id="ixv-16953">OR</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber contextRef="d_2023-01-01_2023-12-31" id="ixv-16954">93-0557988</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1 contextRef="d_2023-01-01_2023-12-31" id="ixv-78">201 NE Park Plaza Drive, Suite&#160;100</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown contextRef="d_2023-01-01_2023-12-31" id="ixv-16955">Vancouver</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince contextRef="d_2023-01-01_2023-12-31" id="ixv-16956">WA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode contextRef="d_2023-01-01_2023-12-31" id="ixv-16957">98684</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode contextRef="d_2023-01-01_2023-12-31" id="ixv-16958">360</dei:CityAreaCode>
    <dei:LocalPhoneNumber contextRef="d_2023-01-01_2023-12-31" id="ixv-89">397&#x2011;6250</dei:LocalPhoneNumber>
    <dei:Security12bTitle contextRef="d_2023-01-01_2023-12-31" id="ixv-16959">Common Stock, par value $0.01 per share</dei:Security12bTitle>
    <dei:TradingSymbol contextRef="d_2023-01-01_2023-12-31" id="ixv-16960">NWPX</dei:TradingSymbol>
    <dei:SecurityExchangeName contextRef="d_2023-01-01_2023-12-31" id="ixv-16961">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer contextRef="d_2023-01-01_2023-12-31" id="ixv-16962">No</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers contextRef="d_2023-01-01_2023-12-31" id="ixv-16963">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus contextRef="d_2023-01-01_2023-12-31" id="ixv-16964">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent contextRef="d_2023-01-01_2023-12-31" id="ixv-16965">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory contextRef="d_2023-01-01_2023-12-31" id="ixv-16966">Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness contextRef="d_2023-01-01_2023-12-31" id="ixv-16967">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany contextRef="d_2023-01-01_2023-12-31" id="ixv-16968">false</dei:EntityEmergingGrowthCompany>
    <dei:IcfrAuditorAttestationFlag contextRef="d_2023-01-01_2023-12-31" id="ixv-16969">true</dei:IcfrAuditorAttestationFlag>
    <dei:DocumentFinStmtErrorCorrectionFlag contextRef="d_2023-01-01_2023-12-31" id="ixv-16970">false</dei:DocumentFinStmtErrorCorrectionFlag>
    <dei:EntityShellCompany contextRef="d_2023-01-01_2023-12-31" id="ixv-16971">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat
      contextRef="i_2023-06-30"
      decimals="INF"
      id="ixv-16972"
      unitRef="USD">262653481</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i_2024-02-23"
      decimals="INF"
      id="ixv-16973"
      unitRef="Share">9892244</dei:EntityCommonStockSharesOutstanding>
    <ecd:MtrlTermsOfTrdArrTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569392">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 100%;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="vertical-align: top; width: 10%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;a href="#" id="item9b" title="item9b"&gt;&lt;/a&gt;Item&lt;/b&gt;&#160;&lt;b&gt;&lt;em style="font: inherit;"&gt;9B.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="vertical-align: top; width: 90%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Other Information&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;span style="-sec-ix-hidden:c107875783"&gt;&lt;span style="-sec-ix-hidden:c107876477"&gt;&lt;span style="-sec-ix-hidden:c107876478"&gt;&lt;span style="-sec-ix-hidden:c107876479"&gt;None&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; of our directors or officers adopted, modified, or terminated a Rule&#160;&lt;em style="font: inherit;"&gt;10b5&#x2011;1&lt;/em&gt; trading arrangement or a non-Rule&#160;&lt;em style="font: inherit;"&gt;10b5&#x2011;1&lt;/em&gt; trading arrangement during the quarter ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, as such terms are defined under Item&#160;&lt;em style="font: inherit;"&gt;408&lt;/em&gt;(a) of Regulation&#160;S&#x2011;K.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </ecd:MtrlTermsOfTrdArrTextBlock>
    <dei:AuditorFirmId contextRef="d_2023-01-01_2023-12-31" id="ixv-16974">659</dei:AuditorFirmId>
    <dei:AuditorName contextRef="d_2023-01-01_2023-12-31" id="ixv-16975">Moss Adams&#160;LLP</dei:AuditorName>
    <dei:AuditorLocation contextRef="d_2023-01-01_2023-12-31" id="ixv-16976">Portland, Oregon</dei:AuditorLocation>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874584"
      unitRef="USD">444355000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874585"
      unitRef="USD">457665000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874586"
      unitRef="USD">333313000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874587"
      unitRef="USD">366713000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-4"
      id="c107874588"
      unitRef="USD">371810000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874589"
      unitRef="USD">289059000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:GrossProfit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874590"
      unitRef="USD">77642000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874591"
      unitRef="USD">85855000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874592"
      unitRef="USD">44254000</us-gaap:GrossProfit>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874593"
      unitRef="USD">43784000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874594"
      unitRef="USD">41034000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874595"
      unitRef="USD">28222000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874596"
      unitRef="USD">33858000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874597"
      unitRef="USD">44821000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874598"
      unitRef="USD">16032000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874599"
      unitRef="USD">276000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874600"
      unitRef="USD">97000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874601"
      unitRef="USD">328000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:InterestExpense
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874602"
      unitRef="USD">4855000</us-gaap:InterestExpense>
    <us-gaap:InterestExpense
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874603"
      unitRef="USD">3568000</us-gaap:InterestExpense>
    <us-gaap:InterestExpense
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874604"
      unitRef="USD">1202000</us-gaap:InterestExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874605"
      unitRef="USD">29279000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-4"
      id="c107874606"
      unitRef="USD">41350000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874607"
      unitRef="USD">15158000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874608"
      unitRef="USD">8207000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874609"
      unitRef="USD">10201000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874610"
      unitRef="USD">3635000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874611"
      unitRef="USD">21072000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874612"
      unitRef="USD">31149000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874613"
      unitRef="USD">11523000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2023-01-01_2023-12-31"
      decimals="INF"
      id="c107874614"
      unitRef="USDPerShare">2.11</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2022-01-01_2022-12-31"
      decimals="INF"
      id="c107874615"
      unitRef="USDPerShare">3.14</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2021-01-01_2021-12-31"
      decimals="INF"
      id="c107874616"
      unitRef="USDPerShare">1.17</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2023-01-01_2023-12-31"
      decimals="INF"
      id="c107874617"
      unitRef="USDPerShare">2.09</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2022-01-01_2022-12-31"
      decimals="INF"
      id="c107874618"
      unitRef="USDPerShare">3.11</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2021-01-01_2021-12-31"
      decimals="INF"
      id="c107874619"
      unitRef="USDPerShare">1.16</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874620"
      unitRef="Share">9991000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874621"
      unitRef="Share">9914000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874622"
      unitRef="Share">9854000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874623"
      unitRef="Share">10081000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874624"
      unitRef="Share">10012000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874625"
      unitRef="Share">9928000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874634"
      unitRef="USD">21072000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874635"
      unitRef="USD">31149000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874636"
      unitRef="USD">11523000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107874637"
      unitRef="USD">-339000</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107874638"
      unitRef="USD">45000</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107874639"
      unitRef="USD">-308000</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107874640"
      unitRef="USD">-107000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107874641"
      unitRef="USD">289000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107874642"
      unitRef="USD">-124000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107874643"
      unitRef="USD">-403000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107874644"
      unitRef="USD">649000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107874645"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874646"
      unitRef="USD">-171000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874647"
      unitRef="USD">893000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874648"
      unitRef="USD">184000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874649"
      unitRef="USD">20901000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874650"
      unitRef="USD">32042000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874651"
      unitRef="USD">11707000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874657"
      unitRef="USD">4068000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874658"
      unitRef="USD">3681000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:ReceivablesNetCurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874659"
      unitRef="USD">47645000</us-gaap:ReceivablesNetCurrent>
    <us-gaap:ReceivablesNetCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874660"
      unitRef="USD">71563000</us-gaap:ReceivablesNetCurrent>
    <us-gaap:ContractWithCustomerAssetNetCurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874661"
      unitRef="USD">120516000</us-gaap:ContractWithCustomerAssetNetCurrent>
    <us-gaap:ContractWithCustomerAssetNetCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874662"
      unitRef="USD">121778000</us-gaap:ContractWithCustomerAssetNetCurrent>
    <us-gaap:InventoryNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874663"
      unitRef="USD">91229000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874664"
      unitRef="USD">71029000</us-gaap:InventoryNet>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874665"
      unitRef="USD">9026000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874666"
      unitRef="USD">10689000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874667"
      unitRef="USD">272484000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c107874668"
      unitRef="USD">278740000</us-gaap:AssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874669"
      unitRef="USD">143955000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874670"
      unitRef="USD">133166000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874671"
      unitRef="USD">88155000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874672"
      unitRef="USD">93124000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:Goodwill
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874673"
      unitRef="USD">55504000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874674"
      unitRef="USD">55504000</us-gaap:Goodwill>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874675"
      unitRef="USD">31074000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874676"
      unitRef="USD">35264000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874677"
      unitRef="USD">6709000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874678"
      unitRef="USD">5542000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874679"
      unitRef="USD">597881000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c107874680"
      unitRef="USD">601340000</us-gaap:Assets>
    <us-gaap:LongTermDebtCurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874681"
      unitRef="USD">10756000</us-gaap:LongTermDebtCurrent>
    <us-gaap:LongTermDebtCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874682"
      unitRef="USD">10756000</us-gaap:LongTermDebtCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874683"
      unitRef="USD">31142000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874684"
      unitRef="USD">26968000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874685"
      unitRef="USD">27913000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874686"
      unitRef="USD">30957000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107874687"
      unitRef="USD">21450000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874688"
      unitRef="USD">17456000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874689"
      unitRef="USD">4933000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874690"
      unitRef="USD">4702000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874691"
      unitRef="USD">96194000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874692"
      unitRef="USD">90839000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LongTermLineOfCredit
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874693"
      unitRef="USD">54485000</us-gaap:LongTermLineOfCredit>
    <us-gaap:LongTermLineOfCredit
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874694"
      unitRef="USD">83696000</us-gaap:LongTermLineOfCredit>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874695"
      unitRef="USD">85283000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874696"
      unitRef="USD">89472000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874697"
      unitRef="USD">10942000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874698"
      unitRef="USD">11402000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874699"
      unitRef="USD">10617000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874700"
      unitRef="USD">7657000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874701"
      unitRef="USD">257521000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874702"
      unitRef="USD">283066000</us-gaap:Liabilities>
    <us-gaap:PreferredStockValue
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874703"
      unitRef="USD">0</us-gaap:PreferredStockValue>
    <us-gaap:PreferredStockValue
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874704"
      unitRef="USD">0</us-gaap:PreferredStockValue>
    <us-gaap:CommonStockValue
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107874705"
      unitRef="USD">100000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874706"
      unitRef="USD">99000</us-gaap:CommonStockValue>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874707"
      unitRef="USD">129095000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874708"
      unitRef="USD">127911000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874709"
      unitRef="USD">212125000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874710"
      unitRef="USD">191053000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107874711"
      unitRef="USD">-960000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874712"
      unitRef="USD">-789000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107874713"
      unitRef="USD">340360000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874714"
      unitRef="USD">318274000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874715"
      unitRef="USD">597881000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c107874716"
      unitRef="USD">601340000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:SharesOutstanding
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c107874747"
      unitRef="Share">9805437</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874748"
      unitRef="USD">98000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874749"
      unitRef="USD">123013000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874750"
      unitRef="USD">148381000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874751"
      unitRef="USD">-1866000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c107874752"
      unitRef="USD">269626000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874754"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874755"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874756"
      unitRef="USD">11523000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874757"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874758"
      unitRef="USD">11523000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874760"
      unitRef="USD">-0</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874761"
      unitRef="USD">-0</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874762"
      unitRef="USD">-0</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874763"
      unitRef="USD">-308000</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107874764"
      unitRef="USD">-308000</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874766"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874767"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874768"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874769"
      unitRef="USD">-124000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107874770"
      unitRef="USD">-124000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c107874771"
      unitRef="Share">65130</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874772"
      unitRef="USD">-1000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874773"
      unitRef="USD">1167000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874774"
      unitRef="USD">-0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874775"
      unitRef="USD">-0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874776"
      unitRef="USD">1166000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874778"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874779"
      unitRef="USD">3216000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874780"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-01-01_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874781"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874782"
      unitRef="USD">3216000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:SharesOutstanding
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c107874783"
      unitRef="Share">9870567</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874784"
      unitRef="USD">99000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874785"
      unitRef="USD">125062000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874786"
      unitRef="USD">159904000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874787"
      unitRef="USD">-1682000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31"
      decimals="-3"
      id="c107874788"
      unitRef="USD">283383000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874790"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874791"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874792"
      unitRef="USD">31149000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874793"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874794"
      unitRef="USD">31149000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874796"
      unitRef="USD">-0</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874797"
      unitRef="USD">-0</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874798"
      unitRef="USD">-0</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874799"
      unitRef="USD">45000</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107874800"
      unitRef="USD">45000</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874802"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874803"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874804"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874805"
      unitRef="USD">289000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107874806"
      unitRef="USD">289000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874808"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874809"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874810"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874811"
      unitRef="USD">649000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107874812"
      unitRef="USD">649000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c107874813"
      unitRef="Share">56793</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874814"
      unitRef="USD">-0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874815"
      unitRef="USD">853000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874816"
      unitRef="USD">-0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874817"
      unitRef="USD">-0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874818"
      unitRef="USD">853000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874820"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874821"
      unitRef="USD">3702000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874822"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874823"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874824"
      unitRef="USD">3702000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:SharesOutstanding
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c107874825"
      unitRef="Share">9927360</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874826"
      unitRef="USD">99000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874827"
      unitRef="USD">127911000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874828"
      unitRef="USD">191053000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874829"
      unitRef="USD">-789000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874830"
      unitRef="USD">318274000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874832"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874833"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874834"
      unitRef="USD">21072000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874835"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874836"
      unitRef="USD">21072000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874838"
      unitRef="USD">-0</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874839"
      unitRef="USD">-0</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874840"
      unitRef="USD">-0</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874841"
      unitRef="USD">-339000</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107874842"
      unitRef="USD">-339000</us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874844"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874845"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874846"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874847"
      unitRef="USD">-107000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107874848"
      unitRef="USD">-107000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874850"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874851"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874852"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874853"
      unitRef="USD">-403000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107874854"
      unitRef="USD">-403000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossAfterReclassificationAndTaxParent>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c107874855"
      unitRef="Share">86836</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874856"
      unitRef="USD">-1000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874857"
      unitRef="USD">1653000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874858"
      unitRef="USD">-0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874859"
      unitRef="USD">-0</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874860"
      unitRef="USD">1652000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c107874861"
      unitRef="Share">28616</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874862"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874863"
      unitRef="USD">835000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      id="c107874864"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      id="c107874865"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874866"
      unitRef="USD">835000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c107874868"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874869"
      unitRef="USD">3672000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874870"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107874871"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874872"
      unitRef="USD">3672000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:SharesOutstanding
      contextRef="i_2023-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c107874873"
      unitRef="Share">9985580</us-gaap:SharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-5"
      id="c107874874"
      unitRef="USD">100000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c107874875"
      unitRef="USD">129095000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c107874876"
      unitRef="USD">212125000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-4"
      id="c107874877"
      unitRef="USD">-960000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107874878"
      unitRef="USD">340360000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874888"
      unitRef="USD">21072000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874889"
      unitRef="USD">31149000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874890"
      unitRef="USD">11523000</us-gaap:NetIncomeLoss>
    <nwpx:DepreciationAndFinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874891"
      unitRef="USD">11616000</nwpx:DepreciationAndFinanceLeaseRightOfUseAssetAmortization>
    <nwpx:DepreciationAndFinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874892"
      unitRef="USD">12664000</nwpx:DepreciationAndFinanceLeaseRightOfUseAssetAmortization>
    <nwpx:DepreciationAndFinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874893"
      unitRef="USD">11482000</nwpx:DepreciationAndFinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-4"
      id="c107874894"
      unitRef="USD">4190000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874895"
      unitRef="USD">4439000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874896"
      unitRef="USD">2142000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874897"
      unitRef="USD">-172000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874898"
      unitRef="USD">514000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-4"
      id="c107874899"
      unitRef="USD">180000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <nwpx:GainOnInsuranceProceeds
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874900"
      unitRef="USD">466000</nwpx:GainOnInsuranceProceeds>
    <nwpx:GainOnInsuranceProceeds
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874901"
      unitRef="USD">-0</nwpx:GainOnInsuranceProceeds>
    <nwpx:GainOnInsuranceProceeds
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874902"
      unitRef="USD">-0</nwpx:GainOnInsuranceProceeds>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874903"
      unitRef="USD">3672000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874904"
      unitRef="USD">3702000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874905"
      unitRef="USD">3216000</us-gaap:ShareBasedCompensation>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874906"
      unitRef="USD">-1547000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874907"
      unitRef="USD">286000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874908"
      unitRef="USD">-193000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874909"
      unitRef="USD">-23775000</us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables>
    <us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874910"
      unitRef="USD">19346000</us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables>
    <us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874911"
      unitRef="USD">-392000</us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874912"
      unitRef="USD">-5256000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874913"
      unitRef="USD">-225000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874914"
      unitRef="USD">33752000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-5"
      id="c107874915"
      unitRef="USD">20200000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874916"
      unitRef="USD">11378000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-4"
      id="c107874917"
      unitRef="USD">17650000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874918"
      unitRef="USD">-5241000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874919"
      unitRef="USD">-3381000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874920"
      unitRef="USD">-6727000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874921"
      unitRef="USD">4704000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874922"
      unitRef="USD">-5826000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874923"
      unitRef="USD">16783000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-4"
      id="c107874924"
      unitRef="USD">-6780000</us-gaap:IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874925"
      unitRef="USD">-1698000</us-gaap:IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874926"
      unitRef="USD">-7047000</us-gaap:IncreaseDecreaseInAccruedLiabilitiesAndOtherOperatingLiabilities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874927"
      unitRef="USD">53455000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-4"
      id="c107874928"
      unitRef="USD">17540000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874929"
      unitRef="USD">-5811000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874930"
      unitRef="USD">-0</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874931"
      unitRef="USD">-0</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874932"
      unitRef="USD">87215000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <nwpx:PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874933"
      unitRef="USD">2731000</nwpx:PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition>
    <nwpx:PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874934"
      unitRef="USD">-0</nwpx:PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition>
    <nwpx:PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874935"
      unitRef="USD">-0</nwpx:PaymentOfWorkingCapitalAdjustmentInBusinessAcquisition>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874936"
      unitRef="USD">18291000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874937"
      unitRef="USD">22829000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874938"
      unitRef="USD">13262000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquireIntangibleAssets
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874939"
      unitRef="USD">-0</us-gaap:PaymentsToAcquireIntangibleAssets>
    <us-gaap:PaymentsToAcquireIntangibleAssets
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874940"
      unitRef="USD">327000</us-gaap:PaymentsToAcquireIntangibleAssets>
    <us-gaap:PaymentsToAcquireIntangibleAssets
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874941"
      unitRef="USD">-0</us-gaap:PaymentsToAcquireIntangibleAssets>
    <us-gaap:ProceedsFromInsuranceSettlementInvestingActivities
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874942"
      unitRef="USD">431000</us-gaap:ProceedsFromInsuranceSettlementInvestingActivities>
    <us-gaap:ProceedsFromInsuranceSettlementInvestingActivities
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874943"
      unitRef="USD">0</us-gaap:ProceedsFromInsuranceSettlementInvestingActivities>
    <us-gaap:ProceedsFromInsuranceSettlementInvestingActivities
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874944"
      unitRef="USD">0</us-gaap:ProceedsFromInsuranceSettlementInvestingActivities>
    <us-gaap:PaymentsForProceedsFromOtherInvestingActivities
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874945"
      unitRef="USD">-219000</us-gaap:PaymentsForProceedsFromOtherInvestingActivities>
    <us-gaap:PaymentsForProceedsFromOtherInvestingActivities
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874946"
      unitRef="USD">-106000</us-gaap:PaymentsForProceedsFromOtherInvestingActivities>
    <us-gaap:PaymentsForProceedsFromOtherInvestingActivities
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874947"
      unitRef="USD">-325000</us-gaap:PaymentsForProceedsFromOtherInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874948"
      unitRef="USD">-20372000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-4"
      id="c107874949"
      unitRef="USD">-23050000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874950"
      unitRef="USD">-100152000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874951"
      unitRef="USD">155398000</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874952"
      unitRef="USD">177634000</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874953"
      unitRef="USD">122272000</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874954"
      unitRef="USD">184609000</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874955"
      unitRef="USD">180699000</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874956"
      unitRef="USD">35511000</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:ProceedsFromIssuanceOfLongTermDebt
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874957"
      unitRef="USD">0</us-gaap:ProceedsFromIssuanceOfLongTermDebt>
    <us-gaap:ProceedsFromIssuanceOfLongTermDebt
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874958"
      unitRef="USD">10756000</us-gaap:ProceedsFromIssuanceOfLongTermDebt>
    <us-gaap:ProceedsFromIssuanceOfLongTermDebt
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874959"
      unitRef="USD">0</us-gaap:ProceedsFromIssuanceOfLongTermDebt>
    <us-gaap:RepaymentsOfLongTermDebt
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874960"
      unitRef="USD">-0</us-gaap:RepaymentsOfLongTermDebt>
    <us-gaap:RepaymentsOfLongTermDebt
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874961"
      unitRef="USD">-0</us-gaap:RepaymentsOfLongTermDebt>
    <us-gaap:RepaymentsOfLongTermDebt
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874962"
      unitRef="USD">13762000</us-gaap:RepaymentsOfLongTermDebt>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874963"
      unitRef="USD">826000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874964"
      unitRef="USD">597000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874965"
      unitRef="USD">415000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874966"
      unitRef="USD">1652000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874967"
      unitRef="USD">853000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874968"
      unitRef="USD">1166000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874969"
      unitRef="USD">707000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874970"
      unitRef="USD">-0</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874971"
      unitRef="USD">-0</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:ProceedsFromPaymentsForOtherFinancingActivities
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-5"
      id="c107874972"
      unitRef="USD">-300000</us-gaap:ProceedsFromPaymentsForOtherFinancingActivities>
    <us-gaap:ProceedsFromPaymentsForOtherFinancingActivities
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874973"
      unitRef="USD">-47000</us-gaap:ProceedsFromPaymentsForOtherFinancingActivities>
    <us-gaap:ProceedsFromPaymentsForOtherFinancingActivities
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874974"
      unitRef="USD">-385000</us-gaap:ProceedsFromPaymentsForOtherFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874975"
      unitRef="USD">-32696000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874976"
      unitRef="USD">6194000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107874977"
      unitRef="USD">71033000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107874978"
      unitRef="USD">387000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107874979"
      unitRef="USD">684000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-4"
      id="c107874980"
      unitRef="USD">-34930000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874981"
      unitRef="USD">3681000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2021-12-31"
      decimals="-3"
      id="c107874982"
      unitRef="USD">2997000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c107874983"
      unitRef="USD">37927000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107874984"
      unitRef="USD">4068000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107874985"
      unitRef="USD">3681000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2021-12-31"
      decimals="-3"
      id="c107874986"
      unitRef="USD">2997000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:InterestPaidNet
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-4"
      id="c107874998"
      unitRef="USD">4660000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-4"
      id="c107874999"
      unitRef="USD">3170000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875000"
      unitRef="USD">339000</us-gaap:InterestPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875001"
      unitRef="USD">5911000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875002"
      unitRef="USD">13774000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875003"
      unitRef="USD">2481000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:CapitalExpendituresIncurredButNotYetPaid
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875004"
      unitRef="USD">656000</us-gaap:CapitalExpendituresIncurredButNotYetPaid>
    <us-gaap:CapitalExpendituresIncurredButNotYetPaid
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875005"
      unitRef="USD">1314000</us-gaap:CapitalExpendituresIncurredButNotYetPaid>
    <us-gaap:CapitalExpendituresIncurredButNotYetPaid
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875006"
      unitRef="USD">788000</us-gaap:CapitalExpendituresIncurredButNotYetPaid>
    <nwpx:AccruedPaymentsForRepurchaseOfCommonStock
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875007"
      unitRef="USD">128000</nwpx:AccruedPaymentsForRepurchaseOfCommonStock>
    <nwpx:AccruedPaymentsForRepurchaseOfCommonStock
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875008"
      unitRef="USD">0</nwpx:AccruedPaymentsForRepurchaseOfCommonStock>
    <nwpx:AccruedPaymentsForRepurchaseOfCommonStock
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875009"
      unitRef="USD">0</nwpx:AccruedPaymentsForRepurchaseOfCommonStock>
    <nwpx:NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875010"
      unitRef="USD">0</nwpx:NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued>
    <nwpx:NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-4"
      id="c107875011"
      unitRef="USD">1820000</nwpx:NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued>
    <nwpx:NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875012"
      unitRef="USD">911000</nwpx:NoncashOrPartNoncashAcquisitionValueOfConsiderationAccrued>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875013"
      unitRef="USD">952000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875014"
      unitRef="USD">568000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875015"
      unitRef="USD">16043000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-4"
      id="c107875016"
      unitRef="USD">5270000</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875017"
      unitRef="USD">1466000</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875018"
      unitRef="USD">853000</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569393">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;1.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;ORGANIZATION:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Northwest Pipe Company (collectively with its subsidiaries, the &#x201c;Company&#x201d;) is a leading manufacturer of water-related infrastructure products, and operates in two segments, Engineered Steel Pressure Pipe (&#x201c;SPP&#x201d;) and Precast Infrastructure and Engineered Systems (&#x201c;Precast&#x201d;). This segment presentation is consistent with how the Company&#x2019;s chief operating decision maker, its Chief Executive Officer, evaluates performance of the Company and makes decisions regarding the allocation of resources. See Note&#160;&lt;em style="font: inherit;"&gt;19,&lt;/em&gt; &#x201c;Segment Information&#x201d; for detailed descriptions of these segments.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In addition to being the largest manufacturer of engineered steel water pipeline systems in North America, the Company manufactures stormwater and wastewater technology products; high-quality precast and reinforced concrete products; pump lift stations; steel casing pipe, bar-wrapped concrete cylinder pipe, and &lt;em style="font: inherit;"&gt;one&lt;/em&gt; of the largest offerings of pipeline system joints, fittings, and specialized components. Strategically positioned to meet growing water and wastewater infrastructure needs, the Company provides solution-based products for a wide range of markets under the ParkUSA, Geneva Pipe and Precast, Permalok&#xae;, and Northwest Pipe Company lines. The Company is headquartered in Vancouver, Washington, and has 13&#160;manufacturing facilities across North America.&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock>
    <us-gaap:NumberOfOperatingSegments
      contextRef="d_2023-01-01_2023-12-31"
      decimals="INF"
      id="c107875790"
      unitRef="Pure">2</us-gaap:NumberOfOperatingSegments>
    <nwpx:NumberOfManufacturingFacilities
      contextRef="d_2023-01-01_2023-12-31"
      decimals="INF"
      id="c107875793"
      unitRef="Pure">13</nwpx:NumberOfManufacturingFacilities>
    <us-gaap:SignificantAccountingPoliciesTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569394">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;SUMMARY OF SIGNIFICANT ACCOUNTING POLICIES:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Basis of Consolidation and Presentation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Consolidated Financial Statements are expressed in United States Dollars and include the accounts of the Company and its subsidiaries over which the Company exercises control as of the financial statement date. Intercompany accounts and transactions have been eliminated.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Use of Estimates&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The preparation of the Consolidated Financial Statements in conformity with accounting principles generally accepted in the United States of America (&#x201c;U.S.&#160;GAAP&#x201d;) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and disclosure of contingent assets and liabilities as of the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. The Company bases its estimates on historical experience and on various other assumptions that are believed to be reasonable under the circumstances. On an ongoing basis, the Company evaluates all of its estimates, including those related to business combinations, allowance for doubtful accounts, inventories, property and equipment (including depreciation and valuation), goodwill, intangible assets (including amortization), revenue recognition, share-based compensation, income taxes, and litigation and other contingencies. Actual results &lt;em style="font: inherit;"&gt; may &lt;/em&gt;differ from these estimates under different assumptions or conditions.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Business Combinations&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Business combinations are accounted for under the acquisition method which requires identifiable assets acquired and liabilities assumed in the acquired business be recognized and measured at fair value on the acquisition date, which is the date that the acquirer obtains control of the acquired business. The amount by which the fair value of consideration transferred as the purchase price exceeds the net fair value of assets acquired and liabilities assumed is recorded as goodwill. The amount by which the net fair value of assets acquired and liabilities assumed exceeds the fair value of consideration transferred as the purchase price is recorded as a bargain purchase gain. Acquisition-related transaction costs are expensed as incurred.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;These estimates are inherently uncertain and unpredictable. In addition, unanticipated events and circumstances &lt;em style="font: inherit;"&gt; may &lt;/em&gt;occur which &lt;em style="font: inherit;"&gt; may &lt;/em&gt;affect the accuracy or validity of such estimates. As a result, during the measurement period, which &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be up to &lt;em style="font: inherit;"&gt;one&lt;/em&gt; year from the acquisition date, the Company &lt;em style="font: inherit;"&gt; may &lt;/em&gt;record adjustments to the assets acquired and liabilities assumed with the corresponding offset to goodwill or bargain purchase gain. Upon the conclusion of the measurement period or final determination of the fair value of assets acquired or liabilities assumed, whichever comes first, any subsequent adjustments are recorded to the Company&#x2019;s Consolidated Statements of Operations.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Cash and Cash Equivalents&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Cash and cash equivalents consist of cash and short-term, highly-liquid investments with maturities of &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months or less when purchased. At times, the Company will have outstanding checks in excess of related bank balances (&#x201c;book overdraft&#x201d;). If this occurs, the amount of the book overdraft will be reclassified to accounts payable, and changes in the book overdraft will be reflected as a component of operating activities in the Consolidated Statements of Cash Flows. The Company had a book overdraft of $1.8&#160;million and $0.6&#160;million as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Receivables and Allowance for Doubtful Accounts&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Trade receivables are reported on the Consolidated Balance Sheets net of doubtful accounts. The Company maintains allowances for estimated losses resulting from the inability of its customers to make required payments or from contract disputes. The amounts of such allowances are based on historical experience and management&#x2019;s judgment. The Company will write down or write off a receivable account once the account is deemed uncollectible. If the customers&#x2019; financial conditions were to deteriorate resulting in their inability to make payments, or if contract disputes were to escalate, additional allowances &lt;em style="font: inherit;"&gt; may &lt;/em&gt;need to be recorded which would result in additional expenses being recorded for the period in which such determination was made.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Contract Assets and Contract Liabilities&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Contract assets primarily represent revenue earned over time but &lt;em style="font: inherit;"&gt;not&lt;/em&gt; yet billable based on the terms of the contracts. These amounts will be billed based on the terms of the contracts, which can include certain milestones, partial shipments, or completion of the contracts. Payment terms of amounts billed vary based on the customer, but are typically due within &lt;em style="font: inherit;"&gt;30&lt;/em&gt;&#160;days of invoicing. Contract liabilities represent advance billings on contracts, typically for steel.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Inventories&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Inventories are stated at the lower of cost and net realizable value. The cost of raw material inventories of steel is either on a specific identification basis or on an average cost basis. The cost of substantially all other raw material inventories, as well as work-in-process and supplies, is either on an average cost basis or at standard cost. The cost of finished goods uses the &lt;em style="font: inherit;"&gt;first&lt;/em&gt;-in, &lt;em style="font: inherit;"&gt;first&lt;/em&gt;-out method of accounting.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Property and Equipment&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Property and equipment are recorded at cost. Maintenance and repairs are expensed as incurred, and costs of new equipment and buildings, as well as costs of expansions or refurbishment of existing equipment and buildings, including interest where applicable, are capitalized. Depreciation and amortization are determined by the units of production method for most equipment and by the straight-line method for the remaining assets based on the estimated useful lives of the related assets. Estimated useful lives by major classes of property and equipment are as follows: Land improvements (15&#160;&#x2013; 30&#160;years); Buildings (20&#160;&#x2013; 40&#160;years); Leasehold improvements (5&#160;&#x2013; 30&#160;years); and Machinery and equipment (3&#160;&#x2013; 30&#160;years). Depreciation expense calculated under the units of production method &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be less than, equal to, or greater than depreciation expense calculated under the straight-line method due to variances in production levels. Upon disposal, costs and related accumulated depreciation of the assets are removed from the accounts and resulting gains or losses are reflected in operating expenses. The Company leases certain equipment under long-term finance leases, which are being amortized on a straight-line basis over the shorter of its useful life or the lease term.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company assesses impairment of property and equipment whenever changes in circumstances indicate that the carrying values of the asset or asset group(s) &lt;em style="font: inherit;"&gt; may &lt;/em&gt;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; be recoverable. The asset group is the lowest level at which identifiable cash flows are largely independent of the cash flows of other groups of assets or liabilities. The recoverable value of a long-lived asset group is determined by estimating future undiscounted cash flows using assumptions about the expected future operating performance of the Company.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Leases&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has entered into various equipment and property leases. Certain lease agreements include renewals and/or purchase options set to expire at various dates, and certain lease agreements include rental payments adjusted periodically for inflation. The Company&#x2019;s lease agreements do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; contain any material residual value guarantees or material restrictive covenants.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;


   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;"&gt;The Company determines if an arrangement is a lease at inception. Leases with an initial term of &lt;em style="font: inherit;"&gt;twelve&lt;/em&gt; months or less are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; recorded on the balance sheet; costs for these leases are recognized on a straight-line basis over the lease term. Right-of-use assets and lease liabilities are recognized based on the present value of lease payments over the lease term at commencement date. When the Company&#x2019;s leases do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; provide an implicit rate of return, the Company uses its revolving loan borrowing rate in determining the present value of lease payments. Some of the Company&#x2019;s lease agreements contain non-lease components, which are accounted for separately.&lt;/p&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&#160;&lt;/p&gt;&lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Goodwill&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Goodwill represents the excess of the purchase price over the fair values of the assets acquired and liabilities assumed in conjunction with an acquisition. Goodwill is reviewed for impairment annually, or whenever events occur or circumstances change that indicate goodwill &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be impaired. During the &lt;em style="font: inherit;"&gt;fourth&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; the Company changed the date of its annual impairment test of goodwill from &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31&lt;/em&gt; to &lt;em style="font: inherit;"&gt; November&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;30.&lt;/em&gt; The change in the impairment test date lessens resource constraints that exist in connection with the Company&#x2019;s year-end close and financial reporting process and provides for additional time to complete the required impairment testing. This change did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; represent a material change to the Company&#x2019;s method of applying an accounting principle, and therefore did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; delay, accelerate, or avoid an impairment charge.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In testing goodwill for impairment, the Company has the option to perform a qualitative assessment to determine whether the existence of events or circumstances indicate that it is more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; (more than &lt;em style="font: inherit;"&gt;50%&lt;/em&gt;) that the fair value of a reporting unit is less than its carrying amount. When performing a qualitative assessment, the Company evaluates factors such as industry and market conditions, cost factors, overall financial performance, and other relevant entity specific events and changes. If the qualitative assessment indicates that it is more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; that the fair value of the reporting unit is less than its carrying amount, or if the Company chooses &lt;em style="font: inherit;"&gt;not&lt;/em&gt; to perform the qualitative assessment, then a quantitative assessment is performed to determine the reporting unit&#x2019;s fair value. If the reporting unit&#x2019;s carrying value exceeds its fair value, then an impairment loss is recognized for the amount of the excess of the carrying amount over the reporting unit&#x2019;s fair value, &lt;em style="font: inherit;"&gt;not&lt;/em&gt; to exceed the total amount of goodwill allocated to the reporting unit.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Intangible Assets&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Intangible assets consist primarily of customer relationships, trade names and trademarks, patents, and backlog recorded as the result of acquisition activity. Intangible assets are amortized using the straight-line method over estimated useful lives ranging from &lt;span style="-sec-ix-hidden:c107875832"&gt;ten&lt;/span&gt;&#160;to 21&#160;years.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Workers Compensation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company is self-insured and maintains high deductible policies for losses and liabilities associated with workers compensation claims. Losses are accrued based upon the Company&#x2019;s estimates of the aggregate liability for claims incurred using historical experience and certain actuarial assumptions followed in the insurance industry. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, workers compensation reserves recorded were $2.2&#160;million and $1.6&#160;million, respectively, of which $1.3&#160;million and $0.5&#160;million, respectively, were included in Accrued liabilities and $0.9&#160;million and $1.1&#160;million, respectively, were included in Other long-term liabilities.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Accrued Liabilities&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Accrued liabilities as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; includes accrued bonus of $5.2&#160;million and $8.0&#160;million, respectively, and accrued sales tax of $5.3&#160;million and $4.4&#160;million, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Derivative Instruments&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In the normal course of business, the Company is exposed to interest rate and foreign currency exchange rate fluctuations. Consistent with the Company&#x2019;s strategy for financial risk management, the Company has established a program that utilizes foreign currency forward contracts and interest rate swaps to offset the risks associated with the effects of these exposures. The Company utilizes cash flow hedge accounting treatment for qualifying foreign currency forward contracts and interest rate swaps. Instruments that do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; qualify for cash flow hedge accounting treatment are remeasured at fair value on each balance sheet date and resulting gains and losses are recognized in earnings.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Share Repurchases&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;All shares reacquired in connection with the Company&#x2019;s share repurchase program are retired and treated as authorized and unissued shares.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Pension Benefits&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has &lt;em style="font: inherit;"&gt;two&lt;/em&gt; defined benefit pension plans that have been frozen since &lt;em style="font: inherit;"&gt;2001.&lt;/em&gt; The Company funds these plans to cover current plan costs plus amortization of the unfunded plan liabilities. To record these obligations, management uses estimates relating to investment returns, mortality, and discount rates.&lt;/p&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&#160;&lt;/p&gt;&lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Foreign Currency Transactions&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The functional currency of the Company, including its Mexican operations, is the United States dollar. Monetary assets and liabilities are remeasured at current exchange rates and non-monetary assets and liabilities are remeasured at historical exchange rates. Revenue and expenses related to monetary assets and liabilities are remeasured at average exchange rates and at historical exchange rates for the revenue and expenses related to non-monetary assets and liabilities.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Transaction gains (losses) from foreign currency forward contracts designated as cash flow hedges are included in Accumulated other comprehensive loss as a separate component of Stockholders&#x2019; equity. For the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;, net foreign currency transaction gains (losses) of $0.4&#160;million, $0.5&#160;million, and ($0.5)&#160;million, respectively, were recognized in earnings.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Revenue Recognition&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company manufactures water infrastructure steel pipe products, which are generally made to custom specifications for installation contractors serving projects funded by public water agencies, as well as precast and reinforced concrete products. Generally, each of the Company&#x2019;s contracts with its customers contains a single performance obligation, as the promise to transfer products is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; separately identifiable from other promises in the contract and, therefore, is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; distinct. The Company generally does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; recognize revenue on a contract until the contract has approval and commitment from both parties, the contract rights and payment terms can be identified, the contract has commercial substance, and its collectability is probable.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;SPP revenue for water infrastructure steel pipe products is recognized over time as the manufacturing process progresses because of the Company&#x2019;s right to payment for work performed to date plus a reasonable profit on cancellations for unique products that have &lt;em style="font: inherit;"&gt;no&lt;/em&gt; alternative use to the Company. Revenue is measured by the costs incurred to date relative to the estimated total direct costs to fulfill each contract (cost-to-cost method). Contract costs include all material, labor, and other direct costs incurred in satisfying the performance obligations. The cost of steel material is recognized as a contract cost when the steel is introduced into the manufacturing process. Changes in job performance, job conditions, and estimated profitability, including those arising from contract change orders, contract penalty provisions, foreign currency exchange rate movements, changes in raw materials costs, and final contract settlements &lt;em style="font: inherit;"&gt; may &lt;/em&gt;result in revisions to estimates of revenue, costs, and income, and are recognized in the period in which the revisions are determined. Provisions for losses on uncompleted contracts, included in Accrued liabilities, are estimated by comparing total estimated contract revenue to the total estimated contract costs and a loss is recognized during the period in which it becomes probable and can be reasonably estimated.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Precast revenue for water infrastructure concrete pipe and precast concrete products is recognized at the time control is transferred to customers, in an amount that reflects the consideration the Company expects to be entitled to in exchange for the products. All variable consideration that &lt;em style="font: inherit;"&gt; may &lt;/em&gt;affect the total transaction price, including contractual discounts, returns, and credits, is included in net sales. Estimates for variable consideration are based on historical experience, anticipated performance, and management&#x2019;s judgment. The Company&#x2019;s contracts do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; contain significant financing.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Share-based Compensation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company recognizes the compensation cost of employee and director services received in exchange for awards of equity instruments based on the grant date estimated fair value of the awards. The Company estimates the fair value of restricted stock units (&#x201c;RSUs&#x201d;) and performance share awards (&#x201c;PSAs&#x201d;) using the value of the Company&#x2019;s stock on the date of grant. Share-based compensation cost is recognized over the period during which the employee or director is required to provide service in exchange for the award and, as forfeitures occur, the associated compensation cost recognized to date is reversed. For awards with performance-based payout conditions, the Company recognizes compensation cost based on the probability of achieving the performance conditions, with changes in expectations recognized as an adjustment to earnings in the period of change. Any recognized compensation cost is reversed if the conditions are ultimately &lt;em style="font: inherit;"&gt;not&lt;/em&gt; met.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Income Taxes&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Income taxes are recorded using an asset and liability approach that requires the recognition of deferred income tax assets and liabilities for the expected future income tax consequences of events that have been recognized in the Consolidated Financial Statements or income tax returns. Valuation allowances are established when necessary to reduce deferred income tax assets to the amount expected to be realized. The determination of the provision for income taxes requires significant judgment, the use of estimates, and the interpretation and application of complex tax laws. The provision for income taxes primarily reflects a combination of income earned and taxed in the various United States federal, state, local, and to a lesser extent, foreign jurisdictions. Jurisdictional tax law changes, increases or decreases in permanent differences between book and tax items, accruals or adjustments of accruals for unrecognized income tax benefits or valuation allowances, and the change in the mix of earnings from these taxing jurisdictions all affect the overall effective income tax rate.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company records income tax reserves for federal, state, local, and international exposures relating to periods subject to audit. The development of reserves for these exposures requires judgments about tax issues, potential outcomes and timing, and is a subjective estimate. The Company assesses income tax positions and records income tax benefits for all years subject to examination based upon management&#x2019;s evaluation of the facts, circumstances, and information available at the reporting dates. For those income tax positions where it is more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; that an income tax benefit will be sustained, the Company has recorded the largest amount of income tax benefit with a greater than &lt;em style="font: inherit;"&gt;50%&lt;/em&gt; likelihood of being realized upon settlement with a tax authority that has full knowledge of all relevant information. For those income tax positions where it is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; that an income tax benefit will be sustained, &lt;em style="font: inherit;"&gt;no&lt;/em&gt; income tax benefit has been recognized in the Consolidated Financial Statements.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Accumulated Other Comprehensive Loss&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Accumulated other comprehensive loss includes unrealized gains and losses on derivative instruments related to the effective portion of cash flow hedges and changes in the funded status of the defined benefit pension plans, both net of the related income tax effect.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Net Income per Share&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Basic net income per share is computed by dividing the net income by the weighted-average number of shares of common stock outstanding during the period. Diluted net income per share is computed by giving effect to all dilutive potential shares of common stock, including RSUs and PSAs, assumed to be outstanding during the period using the treasury stock method. Performance-based PSAs are considered dilutive when the related performance conditions have been met assuming the end of the reporting period represents the end of the performance period. In periods with a net loss, all potential shares of common stock are excluded from the computation of diluted net loss per share as the impact would be antidilutive.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Net income per basic and diluted weighted-average common share outstanding was calculated as follows (in thousands, except per share amounts):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;21,072&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,149&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;11,523&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Basic weighted-average common shares outstanding&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,991&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,914&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,854&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Effect of potentially dilutive common shares (1)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;90&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;98&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;74&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Diluted weighted-average common shares outstanding&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,081&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,012&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9,928&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Net income per common share&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Basic&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.11&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3.14&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.17&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.09&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3.11&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.16&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 27pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;(&lt;em style="font: inherit;"&gt;1&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;There were no antidilutive shares for the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, or &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Concentrations of Credit Risk&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Financial instruments, which potentially subject the Company to concentrations of credit risk, consist principally of trade receivables, foreign currency forward contracts, interest rate swaps, and deferred compensation plan assets. Trade receivables generally represent a large number of customers, including municipalities, manufacturers, distributors, and contractors, dispersed across a wide geographic base. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, one customer had a balance in excess of &lt;em style="font: inherit;"&gt;10%&lt;/em&gt; of total accounts receivable. Foreign currency forward contracts and interest rate swaps are with a high-quality financial institution. The Company&#x2019;s deferred compensation plan assets, included in Other assets, are invested in a diversified portfolio of stock and bond mutual funds.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Recent Accounting and Reporting Developments&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;i&gt;Accounting Changes&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt; October 2021, &lt;/em&gt;the Financial Accounting Standards Board (&#x201c;FASB&#x201d;) issued Accounting Standards Update (&#x201c;ASU&#x201d;) &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2021&#x2011;08,&lt;/em&gt; &#x201c;Business Combinations (Topic&#160;&lt;em style="font: inherit;"&gt;805&lt;/em&gt;): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers&#x201d; (&#x201c;ASU&#160;&lt;em style="font: inherit;"&gt;2021&#x2011;08&#x201d;&lt;/em&gt;) which requires an entity to recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Accounting Standards Codification Topic&#160;&lt;em style="font: inherit;"&gt;606,&lt;/em&gt; &#x201c;Revenue from Contracts with Customers,&#x201d; as if it had originated the contracts. The Company adopted ASU&#160;&lt;em style="font: inherit;"&gt;2021&#x2011;08&lt;/em&gt; on &lt;em style="font: inherit;"&gt; January&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;1,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and the impact was &lt;em style="font: inherit;"&gt;not&lt;/em&gt; material to the Company&#x2019;s financial position, results of operations, or cash flows.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;i&gt;Recent Accounting Standards&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt; March 2023, &lt;/em&gt;the FASB issued ASU &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;01&lt;/em&gt; &#x201c;Leases (Topic&#160;&lt;em style="font: inherit;"&gt;842&lt;/em&gt;): Common Control Arrangements&#x201d; (&#x201c;ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;01&#x201d;&lt;/em&gt;) which requires leasehold improvements associated with common control leases be (&lt;em style="font: inherit;"&gt;1&lt;/em&gt;)&#160;amortized by the lessee over the useful life of the leasehold improvements to the common control group as long as the lessee controls the use of the underlying asset through a lease and (&lt;em style="font: inherit;"&gt;2&lt;/em&gt;)&#160;accounted for as a transfer between entities under common control through an adjustment to equity if, and when, the lessee &lt;em style="font: inherit;"&gt;no&lt;/em&gt; longer controls the use of the underlying asset. ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;01&lt;/em&gt; is effective for the Company beginning &lt;em style="font: inherit;"&gt; January&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;1,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2024,&lt;/em&gt; including interim periods in &lt;em style="font: inherit;"&gt;2024,&lt;/em&gt; with early adoption permitted. The Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt; October 2023, &lt;/em&gt;the FASB issued ASU &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;06,&lt;/em&gt; &#x201c;Disclosure Improvements: Codification Amendments in Response to the SEC&#x2019;s Disclosure Update and Simplification Initiative&#x201d; (&#x201c;ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;06&#x201d;&lt;/em&gt;) which incorporates certain SEC disclosure requirements into the Accounting Standards Codification. The effective date for each amendment in ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;06&lt;/em&gt; will be the effective date of the removal of the disclosure requirement from Regulation&#160;S&#x2011;X or Regulation&#160;S&#x2011;K, with early adoption prohibited. The amendments should be applied prospectively. The Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt; November 2023, &lt;/em&gt;the FASB issued ASU &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;07,&lt;/em&gt; &#x201c;Segment Reporting (Topic&#160;&lt;em style="font: inherit;"&gt;280&lt;/em&gt;): Improvements to Reportable Segment Disclosures&#x201d; (&#x201c;ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;07&#x201d;&lt;/em&gt;) which requires disclosure of incremental segment information, primarily through enhanced disclosures about significant segment expenses, on an annual and interim basis for all public entities. ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;07&lt;/em&gt; will be applied retrospectively, and will be effective for the Company&#x2019;s &lt;em style="font: inherit;"&gt;2024&lt;/em&gt; annual reporting, and for interim periods beginning in &lt;em style="font: inherit;"&gt;2025,&lt;/em&gt; with early adoption permitted. The Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt; December 2023, &lt;/em&gt;the FASB issued ASU &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;09,&lt;/em&gt; &#x201c;Income Taxes (Topic&#160;&lt;em style="font: inherit;"&gt;740&lt;/em&gt;): Improvements to Income Tax Disclosures&#x201d; (&#x201c;ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;09&#x201d;&lt;/em&gt;) which improves the transparency, effectiveness, and comparability of income tax disclosures and allows investors to better assess, in their capital allocation decisions, how an entity&#x2019;s worldwide operations and related tax risks and tax planning and operation opportunities affect its income tax rate and prospects for future cash flows. ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;09&lt;/em&gt; will be applied prospectively, and will be effective for the Company&#x2019;s &lt;em style="font: inherit;"&gt;2025&lt;/em&gt; annual reporting, with early adoption permitted. The Company is currently assessing the impact of ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;09&lt;/em&gt; on its disclosures in the notes to the consolidated financial statements.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;

  </us-gaap:SignificantAccountingPoliciesTextBlock>
    <us-gaap:ConsolidationPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878016">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Basis of Consolidation and Presentation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Consolidated Financial Statements are expressed in United States Dollars and include the accounts of the Company and its subsidiaries over which the Company exercises control as of the financial statement date. Intercompany accounts and transactions have been eliminated.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:ConsolidationPolicyTextBlock>
    <us-gaap:UseOfEstimates contextRef="d_2023-01-01_2023-12-31" id="c107878017">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Use of Estimates&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The preparation of the Consolidated Financial Statements in conformity with accounting principles generally accepted in the United States of America (&#x201c;U.S.&#160;GAAP&#x201d;) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and disclosure of contingent assets and liabilities as of the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. The Company bases its estimates on historical experience and on various other assumptions that are believed to be reasonable under the circumstances. On an ongoing basis, the Company evaluates all of its estimates, including those related to business combinations, allowance for doubtful accounts, inventories, property and equipment (including depreciation and valuation), goodwill, intangible assets (including amortization), revenue recognition, share-based compensation, income taxes, and litigation and other contingencies. Actual results &lt;em style="font: inherit;"&gt; may &lt;/em&gt;differ from these estimates under different assumptions or conditions.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:UseOfEstimates>
    <us-gaap:BusinessCombinationsPolicy contextRef="d_2023-01-01_2023-12-31" id="c107878018">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Business Combinations&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Business combinations are accounted for under the acquisition method which requires identifiable assets acquired and liabilities assumed in the acquired business be recognized and measured at fair value on the acquisition date, which is the date that the acquirer obtains control of the acquired business. The amount by which the fair value of consideration transferred as the purchase price exceeds the net fair value of assets acquired and liabilities assumed is recorded as goodwill. The amount by which the net fair value of assets acquired and liabilities assumed exceeds the fair value of consideration transferred as the purchase price is recorded as a bargain purchase gain. Acquisition-related transaction costs are expensed as incurred.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;These estimates are inherently uncertain and unpredictable. In addition, unanticipated events and circumstances &lt;em style="font: inherit;"&gt; may &lt;/em&gt;occur which &lt;em style="font: inherit;"&gt; may &lt;/em&gt;affect the accuracy or validity of such estimates. As a result, during the measurement period, which &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be up to &lt;em style="font: inherit;"&gt;one&lt;/em&gt; year from the acquisition date, the Company &lt;em style="font: inherit;"&gt; may &lt;/em&gt;record adjustments to the assets acquired and liabilities assumed with the corresponding offset to goodwill or bargain purchase gain. Upon the conclusion of the measurement period or final determination of the fair value of assets acquired or liabilities assumed, whichever comes first, any subsequent adjustments are recorded to the Company&#x2019;s Consolidated Statements of Operations.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:BusinessCombinationsPolicy>
    <us-gaap:CashAndCashEquivalentsPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878019">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Cash and Cash Equivalents&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Cash and cash equivalents consist of cash and short-term, highly-liquid investments with maturities of &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months or less when purchased. At times, the Company will have outstanding checks in excess of related bank balances (&#x201c;book overdraft&#x201d;). If this occurs, the amount of the book overdraft will be reclassified to accounts payable, and changes in the book overdraft will be reflected as a component of operating activities in the Consolidated Statements of Cash Flows. The Company had a book overdraft of $1.8&#160;million and $0.6&#160;million as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:CashAndCashEquivalentsPolicyTextBlock>
    <nwpx:BookOverdrafts
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107875798"
      unitRef="USD">1800000</nwpx:BookOverdrafts>
    <nwpx:BookOverdrafts
      contextRef="i_2022-12-31"
      decimals="-5"
      id="c107875799"
      unitRef="USD">600000</nwpx:BookOverdrafts>
    <us-gaap:ReceivablesPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878020">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Receivables and Allowance for Doubtful Accounts&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Trade receivables are reported on the Consolidated Balance Sheets net of doubtful accounts. The Company maintains allowances for estimated losses resulting from the inability of its customers to make required payments or from contract disputes. The amounts of such allowances are based on historical experience and management&#x2019;s judgment. The Company will write down or write off a receivable account once the account is deemed uncollectible. If the customers&#x2019; financial conditions were to deteriorate resulting in their inability to make payments, or if contract disputes were to escalate, additional allowances &lt;em style="font: inherit;"&gt; may &lt;/em&gt;need to be recorded which would result in additional expenses being recorded for the period in which such determination was made.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:ReceivablesPolicyTextBlock>
    <nwpx:ContractAssetsAndLiabilitiesPolicyPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878021">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Contract Assets and Contract Liabilities&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Contract assets primarily represent revenue earned over time but &lt;em style="font: inherit;"&gt;not&lt;/em&gt; yet billable based on the terms of the contracts. These amounts will be billed based on the terms of the contracts, which can include certain milestones, partial shipments, or completion of the contracts. Payment terms of amounts billed vary based on the customer, but are typically due within &lt;em style="font: inherit;"&gt;30&lt;/em&gt;&#160;days of invoicing. Contract liabilities represent advance billings on contracts, typically for steel.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</nwpx:ContractAssetsAndLiabilitiesPolicyPolicyTextBlock>
    <us-gaap:InventoryPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878022">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Inventories&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Inventories are stated at the lower of cost and net realizable value. The cost of raw material inventories of steel is either on a specific identification basis or on an average cost basis. The cost of substantially all other raw material inventories, as well as work-in-process and supplies, is either on an average cost basis or at standard cost. The cost of finished goods uses the &lt;em style="font: inherit;"&gt;first&lt;/em&gt;-in, &lt;em style="font: inherit;"&gt;first&lt;/em&gt;-out method of accounting.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:InventoryPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878023">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Property and Equipment&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Property and equipment are recorded at cost. Maintenance and repairs are expensed as incurred, and costs of new equipment and buildings, as well as costs of expansions or refurbishment of existing equipment and buildings, including interest where applicable, are capitalized. Depreciation and amortization are determined by the units of production method for most equipment and by the straight-line method for the remaining assets based on the estimated useful lives of the related assets. Estimated useful lives by major classes of property and equipment are as follows: Land improvements (15&#160;&#x2013; 30&#160;years); Buildings (20&#160;&#x2013; 40&#160;years); Leasehold improvements (5&#160;&#x2013; 30&#160;years); and Machinery and equipment (3&#160;&#x2013; 30&#160;years). Depreciation expense calculated under the units of production method &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be less than, equal to, or greater than depreciation expense calculated under the straight-line method due to variances in production levels. Upon disposal, costs and related accumulated depreciation of the assets are removed from the accounts and resulting gains or losses are reflected in operating expenses. The Company leases certain equipment under long-term finance leases, which are being amortized on a straight-line basis over the shorter of its useful life or the lease term.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company assesses impairment of property and equipment whenever changes in circumstances indicate that the carrying values of the asset or asset group(s) &lt;em style="font: inherit;"&gt; may &lt;/em&gt;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; be recoverable. The asset group is the lowest level at which identifiable cash flows are largely independent of the cash flows of other groups of assets or liabilities. The recoverable value of a long-lived asset group is determined by estimating future undiscounted cash flows using assumptions about the expected future operating performance of the Company.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember_RangeAxis-MinimumMember"
      id="c107875807">P15Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember_RangeAxis-MaximumMember"
      id="c107875808">P30Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember_RangeAxis-MinimumMember"
      id="c107875809">P20Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember_RangeAxis-MaximumMember"
      id="c107875810">P40Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember_RangeAxis-MinimumMember"
      id="c107875811">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember_RangeAxis-MaximumMember"
      id="c107875812">P30Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember_RangeAxis-MinimumMember"
      id="c107875813">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember_RangeAxis-MaximumMember"
      id="c107875814">P30Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:LesseeLeasesPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878025">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Leases&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has entered into various equipment and property leases. Certain lease agreements include renewals and/or purchase options set to expire at various dates, and certain lease agreements include rental payments adjusted periodically for inflation. The Company&#x2019;s lease agreements do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; contain any material residual value guarantees or material restrictive covenants.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;&lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;/p&gt;


   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;"&gt;The Company determines if an arrangement is a lease at inception. Leases with an initial term of &lt;em style="font: inherit;"&gt;twelve&lt;/em&gt; months or less are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; recorded on the balance sheet; costs for these leases are recognized on a straight-line basis over the lease term. Right-of-use assets and lease liabilities are recognized based on the present value of lease payments over the lease term at commencement date. When the Company&#x2019;s leases do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; provide an implicit rate of return, the Company uses its revolving loan borrowing rate in determining the present value of lease payments. Some of the Company&#x2019;s lease agreements contain non-lease components, which are accounted for separately.&lt;/p&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&#160;&lt;/p&gt;</us-gaap:LesseeLeasesPolicyTextBlock>
    <us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy contextRef="d_2023-01-01_2023-12-31" id="c107878026">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Goodwill&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Goodwill represents the excess of the purchase price over the fair values of the assets acquired and liabilities assumed in conjunction with an acquisition. Goodwill is reviewed for impairment annually, or whenever events occur or circumstances change that indicate goodwill &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be impaired. During the &lt;em style="font: inherit;"&gt;fourth&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; the Company changed the date of its annual impairment test of goodwill from &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31&lt;/em&gt; to &lt;em style="font: inherit;"&gt; November&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;30.&lt;/em&gt; The change in the impairment test date lessens resource constraints that exist in connection with the Company&#x2019;s year-end close and financial reporting process and provides for additional time to complete the required impairment testing. This change did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; represent a material change to the Company&#x2019;s method of applying an accounting principle, and therefore did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; delay, accelerate, or avoid an impairment charge.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In testing goodwill for impairment, the Company has the option to perform a qualitative assessment to determine whether the existence of events or circumstances indicate that it is more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; (more than &lt;em style="font: inherit;"&gt;50%&lt;/em&gt;) that the fair value of a reporting unit is less than its carrying amount. When performing a qualitative assessment, the Company evaluates factors such as industry and market conditions, cost factors, overall financial performance, and other relevant entity specific events and changes. If the qualitative assessment indicates that it is more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; that the fair value of the reporting unit is less than its carrying amount, or if the Company chooses &lt;em style="font: inherit;"&gt;not&lt;/em&gt; to perform the qualitative assessment, then a quantitative assessment is performed to determine the reporting unit&#x2019;s fair value. If the reporting unit&#x2019;s carrying value exceeds its fair value, then an impairment loss is recognized for the amount of the excess of the carrying amount over the reporting unit&#x2019;s fair value, &lt;em style="font: inherit;"&gt;not&lt;/em&gt; to exceed the total amount of goodwill allocated to the reporting unit.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy>
    <us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy contextRef="d_2023-01-01_2023-12-31" id="c107878027">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Intangible Assets&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Intangible assets consist primarily of customer relationships, trade names and trademarks, patents, and backlog recorded as the result of acquisition activity. Intangible assets are amortized using the straight-line method over estimated useful lives ranging from &lt;span style="-sec-ix-hidden:c107875832"&gt;ten&lt;/span&gt;&#160;to 21&#160;years.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i_2023-12-31_RangeAxis-MaximumMember"
      id="c107875833">P21Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <nwpx:WorkersCompensationInsurancePolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878028">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Workers Compensation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company is self-insured and maintains high deductible policies for losses and liabilities associated with workers compensation claims. Losses are accrued based upon the Company&#x2019;s estimates of the aggregate liability for claims incurred using historical experience and certain actuarial assumptions followed in the insurance industry. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, workers compensation reserves recorded were $2.2&#160;million and $1.6&#160;million, respectively, of which $1.3&#160;million and $0.5&#160;million, respectively, were included in Accrued liabilities and $0.9&#160;million and $1.1&#160;million, respectively, were included in Other long-term liabilities.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</nwpx:WorkersCompensationInsurancePolicyTextBlock>
    <us-gaap:WorkersCompensationLiabilityCurrentAndNoncurrent
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107875837"
      unitRef="USD">2200000</us-gaap:WorkersCompensationLiabilityCurrentAndNoncurrent>
    <us-gaap:WorkersCompensationLiabilityCurrentAndNoncurrent
      contextRef="i_2022-12-31"
      decimals="-5"
      id="c107875838"
      unitRef="USD">1600000</us-gaap:WorkersCompensationLiabilityCurrentAndNoncurrent>
    <us-gaap:WorkersCompensationLiabilityCurrent
      contextRef="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilityMember"
      decimals="-5"
      id="c107875839"
      unitRef="USD">1300000</us-gaap:WorkersCompensationLiabilityCurrent>
    <us-gaap:WorkersCompensationLiabilityCurrent
      contextRef="i_2022-12-31_BalanceSheetLocationAxis-AccruedLiabilityMember"
      decimals="-5"
      id="c107875840"
      unitRef="USD">500000</us-gaap:WorkersCompensationLiabilityCurrent>
    <us-gaap:WorkersCompensationLiabilityNoncurrent
      contextRef="i_2023-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember"
      decimals="-5"
      id="c107875841"
      unitRef="USD">900000</us-gaap:WorkersCompensationLiabilityNoncurrent>
    <us-gaap:WorkersCompensationLiabilityNoncurrent
      contextRef="i_2022-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember"
      decimals="-5"
      id="c107875842"
      unitRef="USD">1100000</us-gaap:WorkersCompensationLiabilityNoncurrent>
    <nwpx:AccruedLiabilitiesPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878029">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Accrued Liabilities&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Accrued liabilities as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; includes accrued bonus of $5.2&#160;million and $8.0&#160;million, respectively, and accrued sales tax of $5.3&#160;million and $4.4&#160;million, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</nwpx:AccruedLiabilitiesPolicyTextBlock>
    <us-gaap:AccruedBonusesCurrent
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107875846"
      unitRef="USD">5200000</us-gaap:AccruedBonusesCurrent>
    <us-gaap:AccruedBonusesCurrent
      contextRef="i_2022-12-31"
      decimals="-6"
      id="c107875847"
      unitRef="USD">8000000</us-gaap:AccruedBonusesCurrent>
    <us-gaap:SalesAndExciseTaxPayableCurrent
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107875848"
      unitRef="USD">5300000</us-gaap:SalesAndExciseTaxPayableCurrent>
    <us-gaap:SalesAndExciseTaxPayableCurrent
      contextRef="i_2022-12-31"
      decimals="-5"
      id="c107875849"
      unitRef="USD">4400000</us-gaap:SalesAndExciseTaxPayableCurrent>
    <us-gaap:DerivativesPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878030">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Derivative Instruments&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In the normal course of business, the Company is exposed to interest rate and foreign currency exchange rate fluctuations. Consistent with the Company&#x2019;s strategy for financial risk management, the Company has established a program that utilizes foreign currency forward contracts and interest rate swaps to offset the risks associated with the effects of these exposures. The Company utilizes cash flow hedge accounting treatment for qualifying foreign currency forward contracts and interest rate swaps. Instruments that do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; qualify for cash flow hedge accounting treatment are remeasured at fair value on each balance sheet date and resulting gains and losses are recognized in earnings.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:DerivativesPolicyTextBlock>
    <us-gaap:StockholdersEquityPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878031">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Share Repurchases&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;All shares reacquired in connection with the Company&#x2019;s share repurchase program are retired and treated as authorized and unissued shares.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:StockholdersEquityPolicyTextBlock>
    <us-gaap:PensionAndOtherPostretirementPlansPolicy contextRef="d_2023-01-01_2023-12-31" id="c107878032">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Pension Benefits&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has &lt;em style="font: inherit;"&gt;two&lt;/em&gt; defined benefit pension plans that have been frozen since &lt;em style="font: inherit;"&gt;2001.&lt;/em&gt; The Company funds these plans to cover current plan costs plus amortization of the unfunded plan liabilities. To record these obligations, management uses estimates relating to investment returns, mortality, and discount rates.&lt;/p&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&#160;&lt;/p&gt;</us-gaap:PensionAndOtherPostretirementPlansPolicy>
    <us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878033">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Foreign Currency Transactions&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The functional currency of the Company, including its Mexican operations, is the United States dollar. Monetary assets and liabilities are remeasured at current exchange rates and non-monetary assets and liabilities are remeasured at historical exchange rates. Revenue and expenses related to monetary assets and liabilities are remeasured at average exchange rates and at historical exchange rates for the revenue and expenses related to non-monetary assets and liabilities.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Transaction gains (losses) from foreign currency forward contracts designated as cash flow hedges are included in Accumulated other comprehensive loss as a separate component of Stockholders&#x2019; equity. For the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;, net foreign currency transaction gains (losses) of $0.4&#160;million, $0.5&#160;million, and ($0.5)&#160;million, respectively, were recognized in earnings.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock>
    <us-gaap:ForeignCurrencyTransactionGainLossRealized
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-5"
      id="c107875858"
      unitRef="USD">400000</us-gaap:ForeignCurrencyTransactionGainLossRealized>
    <us-gaap:ForeignCurrencyTransactionGainLossRealized
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-5"
      id="c107875859"
      unitRef="USD">500000</us-gaap:ForeignCurrencyTransactionGainLossRealized>
    <us-gaap:ForeignCurrencyTransactionGainLossRealized
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-5"
      id="c107875860"
      unitRef="USD">-500000</us-gaap:ForeignCurrencyTransactionGainLossRealized>
    <us-gaap:RevenueRecognitionPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878034">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Revenue Recognition&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company manufactures water infrastructure steel pipe products, which are generally made to custom specifications for installation contractors serving projects funded by public water agencies, as well as precast and reinforced concrete products. Generally, each of the Company&#x2019;s contracts with its customers contains a single performance obligation, as the promise to transfer products is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; separately identifiable from other promises in the contract and, therefore, is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; distinct. The Company generally does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; recognize revenue on a contract until the contract has approval and commitment from both parties, the contract rights and payment terms can be identified, the contract has commercial substance, and its collectability is probable.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;SPP revenue for water infrastructure steel pipe products is recognized over time as the manufacturing process progresses because of the Company&#x2019;s right to payment for work performed to date plus a reasonable profit on cancellations for unique products that have &lt;em style="font: inherit;"&gt;no&lt;/em&gt; alternative use to the Company. Revenue is measured by the costs incurred to date relative to the estimated total direct costs to fulfill each contract (cost-to-cost method). Contract costs include all material, labor, and other direct costs incurred in satisfying the performance obligations. The cost of steel material is recognized as a contract cost when the steel is introduced into the manufacturing process. Changes in job performance, job conditions, and estimated profitability, including those arising from contract change orders, contract penalty provisions, foreign currency exchange rate movements, changes in raw materials costs, and final contract settlements &lt;em style="font: inherit;"&gt; may &lt;/em&gt;result in revisions to estimates of revenue, costs, and income, and are recognized in the period in which the revisions are determined. Provisions for losses on uncompleted contracts, included in Accrued liabilities, are estimated by comparing total estimated contract revenue to the total estimated contract costs and a loss is recognized during the period in which it becomes probable and can be reasonably estimated.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Precast revenue for water infrastructure concrete pipe and precast concrete products is recognized at the time control is transferred to customers, in an amount that reflects the consideration the Company expects to be entitled to in exchange for the products. All variable consideration that &lt;em style="font: inherit;"&gt; may &lt;/em&gt;affect the total transaction price, including contractual discounts, returns, and credits, is included in net sales. Estimates for variable consideration are based on historical experience, anticipated performance, and management&#x2019;s judgment. The Company&#x2019;s contracts do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; contain significant financing.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:RevenueRecognitionPolicyTextBlock>
    <us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy contextRef="d_2023-01-01_2023-12-31" id="c107878035">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Share-based Compensation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company recognizes the compensation cost of employee and director services received in exchange for awards of equity instruments based on the grant date estimated fair value of the awards. The Company estimates the fair value of restricted stock units (&#x201c;RSUs&#x201d;) and performance share awards (&#x201c;PSAs&#x201d;) using the value of the Company&#x2019;s stock on the date of grant. Share-based compensation cost is recognized over the period during which the employee or director is required to provide service in exchange for the award and, as forfeitures occur, the associated compensation cost recognized to date is reversed. For awards with performance-based payout conditions, the Company recognizes compensation cost based on the probability of achieving the performance conditions, with changes in expectations recognized as an adjustment to earnings in the period of change. Any recognized compensation cost is reversed if the conditions are ultimately &lt;em style="font: inherit;"&gt;not&lt;/em&gt; met.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy>
    <us-gaap:IncomeTaxPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878036">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Income Taxes&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Income taxes are recorded using an asset and liability approach that requires the recognition of deferred income tax assets and liabilities for the expected future income tax consequences of events that have been recognized in the Consolidated Financial Statements or income tax returns. Valuation allowances are established when necessary to reduce deferred income tax assets to the amount expected to be realized. The determination of the provision for income taxes requires significant judgment, the use of estimates, and the interpretation and application of complex tax laws. The provision for income taxes primarily reflects a combination of income earned and taxed in the various United States federal, state, local, and to a lesser extent, foreign jurisdictions. Jurisdictional tax law changes, increases or decreases in permanent differences between book and tax items, accruals or adjustments of accruals for unrecognized income tax benefits or valuation allowances, and the change in the mix of earnings from these taxing jurisdictions all affect the overall effective income tax rate.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company records income tax reserves for federal, state, local, and international exposures relating to periods subject to audit. The development of reserves for these exposures requires judgments about tax issues, potential outcomes and timing, and is a subjective estimate. The Company assesses income tax positions and records income tax benefits for all years subject to examination based upon management&#x2019;s evaluation of the facts, circumstances, and information available at the reporting dates. For those income tax positions where it is more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; that an income tax benefit will be sustained, the Company has recorded the largest amount of income tax benefit with a greater than &lt;em style="font: inherit;"&gt;50%&lt;/em&gt; likelihood of being realized upon settlement with a tax authority that has full knowledge of all relevant information. For those income tax positions where it is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; that an income tax benefit will be sustained, &lt;em style="font: inherit;"&gt;no&lt;/em&gt; income tax benefit has been recognized in the Consolidated Financial Statements.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:IncomeTaxPolicyTextBlock>
    <us-gaap:ComprehensiveIncomePolicyPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878037">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Accumulated Other Comprehensive Loss&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Accumulated other comprehensive loss includes unrealized gains and losses on derivative instruments related to the effective portion of cash flow hedges and changes in the funded status of the defined benefit pension plans, both net of the related income tax effect.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:ComprehensiveIncomePolicyPolicyTextBlock>
    <us-gaap:EarningsPerSharePolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878038">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Net Income per Share&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Basic net income per share is computed by dividing the net income by the weighted-average number of shares of common stock outstanding during the period. Diluted net income per share is computed by giving effect to all dilutive potential shares of common stock, including RSUs and PSAs, assumed to be outstanding during the period using the treasury stock method. Performance-based PSAs are considered dilutive when the related performance conditions have been met assuming the end of the reporting period represents the end of the performance period. In periods with a net loss, all potential shares of common stock are excluded from the computation of diluted net loss per share as the impact would be antidilutive.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Net income per basic and diluted weighted-average common share outstanding was calculated as follows (in thousands, except per share amounts):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;21,072&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,149&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;11,523&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Basic weighted-average common shares outstanding&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,991&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,914&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,854&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Effect of potentially dilutive common shares (1)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;90&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;98&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;74&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Diluted weighted-average common shares outstanding&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,081&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,012&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9,928&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Net income per common share&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Basic&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.11&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3.14&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.17&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.09&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3.11&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.16&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 27pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;(&lt;em style="font: inherit;"&gt;1&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;There were no antidilutive shares for the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, or &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:EarningsPerSharePolicyTextBlock>
    <us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569395">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;21,072&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,149&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;11,523&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Basic weighted-average common shares outstanding&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,991&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,914&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,854&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Effect of potentially dilutive common shares (1)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;90&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;98&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;74&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Diluted weighted-average common shares outstanding&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,081&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,012&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9,928&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Net income per common share&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Basic&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.11&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3.14&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.17&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.09&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3.11&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.16&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875027"
      unitRef="USD">21072000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875028"
      unitRef="USD">31149000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875029"
      unitRef="USD">11523000</us-gaap:NetIncomeLoss>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875030"
      unitRef="Share">9991000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875031"
      unitRef="Share">9914000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875032"
      unitRef="Share">9854000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-4"
      id="c107875033"
      unitRef="Share">90000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875034"
      unitRef="Share">98000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875035"
      unitRef="Share">74000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875036"
      unitRef="Share">10081000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875037"
      unitRef="Share">10012000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875038"
      unitRef="Share">9928000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2023-01-01_2023-12-31"
      decimals="INF"
      id="c107875039"
      unitRef="USDPerShare">2.11</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2022-01-01_2022-12-31"
      decimals="INF"
      id="c107875040"
      unitRef="USDPerShare">3.14</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2021-01-01_2021-12-31"
      decimals="INF"
      id="c107875041"
      unitRef="USDPerShare">1.17</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2023-01-01_2023-12-31"
      decimals="INF"
      id="c107875042"
      unitRef="USDPerShare">2.09</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2022-01-01_2022-12-31"
      decimals="INF"
      id="c107875043"
      unitRef="USDPerShare">3.11</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2021-01-01_2021-12-31"
      decimals="INF"
      id="c107875044"
      unitRef="USDPerShare">1.16</us-gaap:EarningsPerShareDiluted>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875874"
      unitRef="Share">0</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:ConcentrationRiskCreditRisk contextRef="d_2023-01-01_2023-12-31" id="c107878039">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Concentrations of Credit Risk&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Financial instruments, which potentially subject the Company to concentrations of credit risk, consist principally of trade receivables, foreign currency forward contracts, interest rate swaps, and deferred compensation plan assets. Trade receivables generally represent a large number of customers, including municipalities, manufacturers, distributors, and contractors, dispersed across a wide geographic base. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, one customer had a balance in excess of &lt;em style="font: inherit;"&gt;10%&lt;/em&gt; of total accounts receivable. Foreign currency forward contracts and interest rate swaps are with a high-quality financial institution. The Company&#x2019;s deferred compensation plan assets, included in Other assets, are invested in a diversified portfolio of stock and bond mutual funds.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:ConcentrationRiskCreditRisk>
    <nwpx:NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables
      contextRef="d_2023-01-01_2023-12-31"
      decimals="INF"
      id="c107875883"
      unitRef="Pure">1</nwpx:NumberOfCustomersWithReceivableBalanceInExcessOfTenPercentOfReceivables>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock contextRef="d_2023-01-01_2023-12-31" id="c107878040">&lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Recent Accounting and Reporting Developments&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;i&gt;Accounting Changes&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt; October 2021, &lt;/em&gt;the Financial Accounting Standards Board (&#x201c;FASB&#x201d;) issued Accounting Standards Update (&#x201c;ASU&#x201d;) &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2021&#x2011;08,&lt;/em&gt; &#x201c;Business Combinations (Topic&#160;&lt;em style="font: inherit;"&gt;805&lt;/em&gt;): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers&#x201d; (&#x201c;ASU&#160;&lt;em style="font: inherit;"&gt;2021&#x2011;08&#x201d;&lt;/em&gt;) which requires an entity to recognize and measure contract assets and contract liabilities acquired in a business combination in accordance with Accounting Standards Codification Topic&#160;&lt;em style="font: inherit;"&gt;606,&lt;/em&gt; &#x201c;Revenue from Contracts with Customers,&#x201d; as if it had originated the contracts. The Company adopted ASU&#160;&lt;em style="font: inherit;"&gt;2021&#x2011;08&lt;/em&gt; on &lt;em style="font: inherit;"&gt; January&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;1,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and the impact was &lt;em style="font: inherit;"&gt;not&lt;/em&gt; material to the Company&#x2019;s financial position, results of operations, or cash flows.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;i&gt;Recent Accounting Standards&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt; March 2023, &lt;/em&gt;the FASB issued ASU &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;01&lt;/em&gt; &#x201c;Leases (Topic&#160;&lt;em style="font: inherit;"&gt;842&lt;/em&gt;): Common Control Arrangements&#x201d; (&#x201c;ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;01&#x201d;&lt;/em&gt;) which requires leasehold improvements associated with common control leases be (&lt;em style="font: inherit;"&gt;1&lt;/em&gt;)&#160;amortized by the lessee over the useful life of the leasehold improvements to the common control group as long as the lessee controls the use of the underlying asset through a lease and (&lt;em style="font: inherit;"&gt;2&lt;/em&gt;)&#160;accounted for as a transfer between entities under common control through an adjustment to equity if, and when, the lessee &lt;em style="font: inherit;"&gt;no&lt;/em&gt; longer controls the use of the underlying asset. ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;01&lt;/em&gt; is effective for the Company beginning &lt;em style="font: inherit;"&gt; January&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;1,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2024,&lt;/em&gt; including interim periods in &lt;em style="font: inherit;"&gt;2024,&lt;/em&gt; with early adoption permitted. The Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt; October 2023, &lt;/em&gt;the FASB issued ASU &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;06,&lt;/em&gt; &#x201c;Disclosure Improvements: Codification Amendments in Response to the SEC&#x2019;s Disclosure Update and Simplification Initiative&#x201d; (&#x201c;ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;06&#x201d;&lt;/em&gt;) which incorporates certain SEC disclosure requirements into the Accounting Standards Codification. The effective date for each amendment in ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;06&lt;/em&gt; will be the effective date of the removal of the disclosure requirement from Regulation&#160;S&#x2011;X or Regulation&#160;S&#x2011;K, with early adoption prohibited. The amendments should be applied prospectively. The Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt; November 2023, &lt;/em&gt;the FASB issued ASU &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;07,&lt;/em&gt; &#x201c;Segment Reporting (Topic&#160;&lt;em style="font: inherit;"&gt;280&lt;/em&gt;): Improvements to Reportable Segment Disclosures&#x201d; (&#x201c;ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;07&#x201d;&lt;/em&gt;) which requires disclosure of incremental segment information, primarily through enhanced disclosures about significant segment expenses, on an annual and interim basis for all public entities. ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;07&lt;/em&gt; will be applied retrospectively, and will be effective for the Company&#x2019;s &lt;em style="font: inherit;"&gt;2024&lt;/em&gt; annual reporting, and for interim periods beginning in &lt;em style="font: inherit;"&gt;2025,&lt;/em&gt; with early adoption permitted. The Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; expect a material impact to its financial position, results of operations, or cash flows from adoption of this guidance.&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt; December 2023, &lt;/em&gt;the FASB issued ASU &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;09,&lt;/em&gt; &#x201c;Income Taxes (Topic&#160;&lt;em style="font: inherit;"&gt;740&lt;/em&gt;): Improvements to Income Tax Disclosures&#x201d; (&#x201c;ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;09&#x201d;&lt;/em&gt;) which improves the transparency, effectiveness, and comparability of income tax disclosures and allows investors to better assess, in their capital allocation decisions, how an entity&#x2019;s worldwide operations and related tax risks and tax planning and operation opportunities affect its income tax rate and prospects for future cash flows. ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;09&lt;/em&gt; will be applied prospectively, and will be effective for the Company&#x2019;s &lt;em style="font: inherit;"&gt;2025&lt;/em&gt; annual reporting, with early adoption permitted. The Company is currently assessing the impact of ASU&#160;&lt;em style="font: inherit;"&gt;2023&#x2011;09&lt;/em&gt; on its disclosures in the notes to the consolidated financial statements.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:BusinessCombinationDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569396">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;3.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;BUSINESS COMB&lt;/b&gt;&lt;b&gt;INATIONS:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Park Environmental Equipment,&lt;/b&gt;&#160;&lt;b&gt;LLC&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;On &lt;em style="font: inherit;"&gt; October&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;5,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2021,&lt;/em&gt; the Company completed the acquisition of 100% of Park Environmental Equipment,&#160;LLC (&#x201c;ParkUSA&#x201d;) for a purchase price of $90.2&#160;million in cash, which is included in the Precast segment for all periods following the acquisition date. ParkUSA is a precast concrete and steel fabrication-based company that develops and manufactures water, wastewater, and environmental solutions. Operations continue with ParkUSA&#x2019;s previous management and workforce at its &lt;em style="font: inherit;"&gt;three&lt;/em&gt; Texas manufacturing facilities located in Houston, Dallas, and San Antonio. This strategic acquisition provides a foothold into the water infrastructure technology market. As the Company employs similar operating capabilities at its existing facilities, it intends to explore strategic opportunities to expand ParkUSA&#x2019;s value-added products within the organization.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table summarizes the purchase consideration and fair value of the assets acquired and liabilities assumed as of &lt;em style="font: inherit;"&gt; October&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;5,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; (in thousands):&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt 0pt 0pt 8pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;Assets&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Cash and cash equivalents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;278&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Trade and other receivables&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;11,034&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Inventories&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,773&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Prepaid expenses and other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;293&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Property and equipment&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;8,076&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating lease right-of-use assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;58,301&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Intangible assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;31,000&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Deferred income taxes&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;347&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total assets acquired&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;122,102&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 84%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;Liabilities&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Accounts payable&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,029&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Accrued liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,067&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;58,301&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total liabilities assumed&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;64,397&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 84%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;32,519&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 84%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;Total purchase consideration&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;90,224&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The tangible and intangible assets acquired and liabilities assumed were recognized based on their estimated fair values on the acquisition date, with the excess purchase consideration recorded as goodwill. As a result of additional information obtained during the measurement period about facts and circumstances that existed as of the acquisition date, the Company recorded measurement period adjustments during the year ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; which resulted in a $1.8&#160;million increase in goodwill and purchase consideration related to the settlement of working capital. The measurement period for the ParkUSA acquisition was complete as of &lt;em style="font: inherit;"&gt; September&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;30,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2022.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table summarizes the components of the intangible assets acquired and their estimated useful lives:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="vertical-align: bottom;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;Estimated Useful Life&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;Fair Value&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;(In years) &lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;(In thousands) &lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Customer relationships&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;10.0&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;19,800&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Trade names and trademarks&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;10.0&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,600&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Patents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;21.0&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,300&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Backlog&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.6&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;300&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total intangible assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;10.4&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,000&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Goodwill arose from the acquisition of an assembled workforce, expansion of product offerings, and management&#x2019;s industry know-how, and is deductible for tax purposes.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;"&gt;The Company incurred transaction costs associated with this acquisition of $0, $0.1&#160;million, and $3.4&#160;million during the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;, respectively. These transaction costs are included in Selling, general, and administrative expense in the Consolidated Statements of Operations.&lt;/p&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Unaudited Pro Forma Disclosures&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following unaudited pro forma summary presents the consolidated results of the Company as if the acquisition of ParkUSA had occurred on &lt;em style="font: inherit;"&gt; January&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;1,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2020&lt;/em&gt; (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31, 2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 84%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Net sales&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;384,872&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;15,780&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;This unaudited pro forma consolidated financial data is included only for the purpose of illustration and does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; necessarily indicate what the operating results would have been if the acquisitions of ParkUSA had occurred on &lt;em style="font: inherit;"&gt; January&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;1&lt;/em&gt; of the year prior to the acquisition. Moreover, this information is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; indicative of what the Company&#x2019;s future operating results will be. The information prior to the acquisition is included based on prior accounting records maintained by ParkUSA. The pro forma amounts have been calculated after applying the Company&#x2019;s accounting policies and adjusting the results of ParkUSA to reflect the additional depreciation and amortization that would have been charged assuming the fair value adjustments to property and equipment and intangible assets had been applied on &lt;em style="font: inherit;"&gt; January&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;1&lt;/em&gt; of the year prior to the acquisition. Adjustments also include an increase of interest expense as if the Company&#x2019;s debt obtained in connection with the acquisitions of ParkUSA had been outstanding since &lt;em style="font: inherit;"&gt; January&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;1&lt;/em&gt; of the year prior to the acquisition. The pro forma results for the year ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; include nonrecurring adjustments to add back the transaction costs incurred and the expense related to the revaluation of inventory acquired in those periods, since those costs are reflected in the preceding year on a pro forma basis. The provision for income taxes has also been adjusted for all periods, based upon the foregoing adjustments to historical results.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:BusinessCombinationDisclosureTextBlock>
    <us-gaap:BusinessAcquisitionPercentageOfVotingInterestsAcquired
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="0"
      id="c107875930"
      unitRef="Pure">1</us-gaap:BusinessAcquisitionPercentageOfVotingInterestsAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-5"
      id="c107875931"
      unitRef="USD">90200000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569397">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;Assets&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Cash and cash equivalents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;278&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Trade and other receivables&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;11,034&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Inventories&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,773&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Prepaid expenses and other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;293&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Property and equipment&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;8,076&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating lease right-of-use assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;58,301&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Intangible assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;31,000&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Deferred income taxes&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;347&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total assets acquired&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;122,102&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 84%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;Liabilities&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Accounts payable&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,029&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Accrued liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,067&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;58,301&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total liabilities assumed&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;64,397&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 84%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;32,519&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 84%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;Total purchase consideration&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;90,224&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875046"
      unitRef="USD">278000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875047"
      unitRef="USD">11034000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875048"
      unitRef="USD">12773000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875049"
      unitRef="USD">293000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875050"
      unitRef="USD">8076000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment>
    <nwpx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875051"
      unitRef="USD">58301000</nwpx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseRightOfUseAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-6"
      id="c107875052"
      unitRef="USD">31000000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875053"
      unitRef="USD">347000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875054"
      unitRef="USD">122102000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875055"
      unitRef="USD">2029000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable>
    <nwpx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875056"
      unitRef="USD">4067000</nwpx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccruedLiabilities>
    <nwpx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875057"
      unitRef="USD">58301000</nwpx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOperatingLeaseLiabilities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875058"
      unitRef="USD">64397000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities>
    <us-gaap:Goodwill
      contextRef="i_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875059"
      unitRef="USD">32519000</us-gaap:Goodwill>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875060"
      unitRef="USD">90224000</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:GoodwillPurchaseAccountingAdjustments
      contextRef="d_2022-01-01_2022-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-5"
      id="c107875937"
      unitRef="USD">1800000</us-gaap:GoodwillPurchaseAccountingAdjustments>
    <us-gaap:ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569398">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="vertical-align: bottom;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;Estimated Useful Life&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;Fair Value&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;(In years) &lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;(In thousands) &lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Customer relationships&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;10.0&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;19,800&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Trade names and trademarks&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;10.0&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,600&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Patents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;21.0&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,300&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Backlog&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.6&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;300&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total intangible assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;10.4&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,000&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      id="c107875063">P10Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:FinitelivedIntangibleAssetsAcquired1
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-5"
      id="c107875064"
      unitRef="USD">19800000</us-gaap:FinitelivedIntangibleAssetsAcquired1>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"
      id="c107875065">P10Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:FinitelivedIntangibleAssetsAcquired1
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"
      decimals="-5"
      id="c107875066"
      unitRef="USD">9600000</us-gaap:FinitelivedIntangibleAssetsAcquired1>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"
      id="c107875067">P21Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:FinitelivedIntangibleAssetsAcquired1
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"
      decimals="-5"
      id="c107875068"
      unitRef="USD">1300000</us-gaap:FinitelivedIntangibleAssetsAcquired1>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-BacklogMember"
      id="c107875069">P0Y7M6D</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:FinitelivedIntangibleAssetsAcquired1
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember_FiniteLivedIntangibleAssetsByMajorClassAxis-BacklogMember"
      decimals="-5"
      id="c107875070"
      unitRef="USD">300000</us-gaap:FinitelivedIntangibleAssetsAcquired1>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      id="c107875071">P10Y4M24D</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:FinitelivedIntangibleAssetsAcquired1
      contextRef="d_2021-10-05_2021-10-05_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-6"
      id="c107875072"
      unitRef="USD">31000000</us-gaap:FinitelivedIntangibleAssetsAcquired1>
    <us-gaap:BusinessCombinationAcquisitionRelatedCosts
      contextRef="d_2023-01-01_2023-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875941"
      unitRef="USD">0</us-gaap:BusinessCombinationAcquisitionRelatedCosts>
    <us-gaap:BusinessCombinationAcquisitionRelatedCosts
      contextRef="d_2022-01-01_2022-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-5"
      id="c107875942"
      unitRef="USD">100000</us-gaap:BusinessCombinationAcquisitionRelatedCosts>
    <us-gaap:BusinessCombinationAcquisitionRelatedCosts
      contextRef="d_2021-01-01_2021-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-5"
      id="c107875943"
      unitRef="USD">3400000</us-gaap:BusinessCombinationAcquisitionRelatedCosts>
    <us-gaap:BusinessAcquisitionProFormaInformationTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569399">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31, 2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 84%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Net sales&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;384,872&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;15,780&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:BusinessAcquisitionProFormaInformationTextBlock>
    <us-gaap:BusinessAcquisitionsProFormaRevenue
      contextRef="d_2021-01-01_2021-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-3"
      id="c107875074"
      unitRef="USD">384872000</us-gaap:BusinessAcquisitionsProFormaRevenue>
    <us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31_BusinessAcquisitionAxis-ParkEnvironmentalEquipmentLlcMember"
      decimals="-4"
      id="c107875075"
      unitRef="USD">15780000</us-gaap:BusinessAcquisitionsProFormaNetIncomeLoss>
    <us-gaap:InventoryDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569400">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;4.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;INVENTORIES:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;Inventories consist of the following (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Raw materials&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;68,110&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;47,978&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Work-in-process&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;8,912&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;5,114&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Finished goods&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;11,911&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;15,773&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Supplies&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,296&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,164&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total inventories&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;91,229&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;71,029&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

  </us-gaap:InventoryDisclosureTextBlock>
    <nwpx:ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569401">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Raw materials&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;68,110&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;47,978&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Work-in-process&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;8,912&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;5,114&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Finished goods&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;11,911&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;15,773&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Supplies&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,296&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,164&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total inventories&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;91,229&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;71,029&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </nwpx:ScheduleOfInventoryCurrentAndNonCurrentTableTextBlock>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107875080"
      unitRef="USD">68110000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875081"
      unitRef="USD">47978000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryWorkInProcessNetOfReserves
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875082"
      unitRef="USD">8912000</us-gaap:InventoryWorkInProcessNetOfReserves>
    <us-gaap:InventoryWorkInProcessNetOfReserves
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875083"
      unitRef="USD">5114000</us-gaap:InventoryWorkInProcessNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875084"
      unitRef="USD">11911000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875085"
      unitRef="USD">15773000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventorySuppliesNetOfReserves
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875086"
      unitRef="USD">2296000</us-gaap:InventorySuppliesNetOfReserves>
    <us-gaap:InventorySuppliesNetOfReserves
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875087"
      unitRef="USD">2164000</us-gaap:InventorySuppliesNetOfReserves>
    <us-gaap:InventoryNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875088"
      unitRef="USD">91229000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875089"
      unitRef="USD">71029000</us-gaap:InventoryNet>
    <us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569402">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;5.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;PROPERTY AND EQUIPMENT:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Property and equipment, net consists of the following (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; background-color: rgb(255, 255, 255);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Land and improvements&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;25,064&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;23,981&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Buildings&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;54,036&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;51,389&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Leasehold improvements&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,182&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,182&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Machinery and equipment&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;155,278&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;149,971&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Equipment under finance lease&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,519&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,849&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;246,079&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;232,372&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Less accumulated depreciation and amortization&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(126,359&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(117,856&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;119,720&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;114,516&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Construction in progress&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;24,235&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;18,650&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Property and equipment, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;143,955&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;133,166&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;All property and equipment is located in the United States, except for $18.2&#160;million and $19.0&#160;million of net property and equipment which is located in Mexico as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock>
    <us-gaap:PropertyPlantAndEquipmentTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569403">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; background-color: rgb(255, 255, 255);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Land and improvements&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;25,064&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;23,981&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Buildings&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;54,036&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;51,389&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Leasehold improvements&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,182&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,182&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Machinery and equipment&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;155,278&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;149,971&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Equipment under finance lease&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,519&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,849&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;246,079&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;232,372&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Less accumulated depreciation and amortization&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(126,359&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(117,856&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;119,720&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;114,516&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Construction in progress&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;24,235&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;18,650&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Property and equipment, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;143,955&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;133,166&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:PropertyPlantAndEquipmentTextBlock>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember"
      decimals="-3"
      id="c107875094"
      unitRef="USD">25064000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-LandImprovementsMember"
      decimals="-3"
      id="c107875095"
      unitRef="USD">23981000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember"
      decimals="-3"
      id="c107875096"
      unitRef="USD">54036000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember"
      decimals="-3"
      id="c107875097"
      unitRef="USD">51389000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember"
      decimals="-3"
      id="c107875098"
      unitRef="USD">3182000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-LeaseholdImprovementsMember"
      decimals="-3"
      id="c107875099"
      unitRef="USD">3182000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember"
      decimals="-3"
      id="c107875100"
      unitRef="USD">155278000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-MachineryAndEquipmentMember"
      decimals="-3"
      id="c107875101"
      unitRef="USD">149971000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentUnderFinanceLeaseMember"
      decimals="-3"
      id="c107875102"
      unitRef="USD">8519000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentUnderFinanceLeaseMember"
      decimals="-3"
      id="c107875103"
      unitRef="USD">3849000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875104"
      unitRef="USD">246079000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875105"
      unitRef="USD">232372000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875106"
      unitRef="USD">126359000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875107"
      unitRef="USD">117856000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <nwpx:PropertyPlantAndEquipmentNetExcludingConstructionInProgress
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107875108"
      unitRef="USD">119720000</nwpx:PropertyPlantAndEquipmentNetExcludingConstructionInProgress>
    <nwpx:PropertyPlantAndEquipmentNetExcludingConstructionInProgress
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875109"
      unitRef="USD">114516000</nwpx:PropertyPlantAndEquipmentNetExcludingConstructionInProgress>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2023-12-31_PropertyPlantAndEquipmentByTypeAxis-ConstructionInProgressMember"
      decimals="-3"
      id="c107875110"
      unitRef="USD">24235000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2022-12-31_PropertyPlantAndEquipmentByTypeAxis-ConstructionInProgressMember"
      decimals="-4"
      id="c107875111"
      unitRef="USD">18650000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875112"
      unitRef="USD">143955000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875113"
      unitRef="USD">133166000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2023-12-31_StatementGeographicalAxis-MX"
      decimals="-5"
      id="c107875960"
      unitRef="USD">18200000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2022-12-31_StatementGeographicalAxis-MX"
      decimals="-6"
      id="c107875961"
      unitRef="USD">19000000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569404">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;6.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;GOODWILL AND INTANGIBLE ASSETS:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Goodwill&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has recorded goodwill of $55.5&#160;million as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; in connection with its business acquisitions within the Precast segment. The Company performed its annual goodwill impairment test as of &lt;em style="font: inherit;"&gt; November&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;30,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; utilizing a qualitative analysis, and did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; identify any potential impairment. It is possible that future changes in circumstances, judgments, or assumptions, including prolonged economic weakness or unexpected significant declines in Precast operating results or projections, &lt;em style="font: inherit;"&gt; may &lt;/em&gt;result in goodwill impairment charges in the future.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Intangible Assets&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Intangible assets consist of the following (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Gross Carrying&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Accumulated&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Intangible&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Amount&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Amortization&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Assets, Net&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;As of December 31, 2023&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Customer relationships&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;27,831&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(7,315&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;20,516&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Trade names and trademarks&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,825&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(3,734&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,091&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Patents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,627&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(160&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,467&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;42,283&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(11,209&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,074&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;As of December 31, 2022&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Customer relationships&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;29,209&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(5,845&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;23,364&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Trade names and trademarks&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,825&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(2,490&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;10,335&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Patents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,627&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(81&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,546&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;329&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(310&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;19&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;43,990&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,726&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;35,264&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;The estimated amortization expense for each of the next &lt;em style="font: inherit;"&gt;five&lt;/em&gt; years and thereafter is as follows (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;Year ending December 31,&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,033&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2025&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,033&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2026&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,033&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2027&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,033&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2028&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,033&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Thereafter&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;10,909&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total amortization expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,074&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock>
    <us-gaap:Goodwill
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107875966"
      unitRef="USD">55500000</us-gaap:Goodwill>
    <us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569405">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Gross Carrying&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Accumulated&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Intangible&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Amount&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Amortization&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Assets, Net&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;As of December 31, 2023&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Customer relationships&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;27,831&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(7,315&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;20,516&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Trade names and trademarks&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,825&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(3,734&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,091&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Patents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,627&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(160&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,467&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;42,283&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(11,209&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,074&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;As of December 31, 2022&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Customer relationships&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;29,209&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(5,845&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;23,364&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Trade names and trademarks&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,825&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(2,490&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;10,335&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Patents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,627&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(81&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,546&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;329&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(310&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;19&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;43,990&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,726&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;35,264&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c107875120"
      unitRef="USD">27831000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c107875121"
      unitRef="USD">7315000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c107875122"
      unitRef="USD">20516000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"
      decimals="-3"
      id="c107875123"
      unitRef="USD">12825000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"
      decimals="-3"
      id="c107875124"
      unitRef="USD">3734000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"
      decimals="-3"
      id="c107875125"
      unitRef="USD">9091000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"
      decimals="-3"
      id="c107875126"
      unitRef="USD">1627000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"
      decimals="-4"
      id="c107875127"
      unitRef="USD">160000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2023-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"
      decimals="-3"
      id="c107875128"
      unitRef="USD">1467000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875129"
      unitRef="USD">42283000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875130"
      unitRef="USD">11209000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875131"
      unitRef="USD">31074000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c107875132"
      unitRef="USD">29209000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c107875133"
      unitRef="USD">5845000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c107875134"
      unitRef="USD">23364000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"
      decimals="-3"
      id="c107875135"
      unitRef="USD">12825000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"
      decimals="-4"
      id="c107875136"
      unitRef="USD">2490000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TrademarksAndTradeNamesMember"
      decimals="-3"
      id="c107875137"
      unitRef="USD">10335000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"
      decimals="-3"
      id="c107875138"
      unitRef="USD">1627000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"
      decimals="-3"
      id="c107875139"
      unitRef="USD">81000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-PatentsMember"
      decimals="-3"
      id="c107875140"
      unitRef="USD">1546000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember"
      decimals="-3"
      id="c107875141"
      unitRef="USD">329000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember"
      decimals="-4"
      id="c107875142"
      unitRef="USD">310000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2022-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-OtherIntangibleAssetsMember"
      decimals="-3"
      id="c107875143"
      unitRef="USD">19000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c107875144"
      unitRef="USD">43990000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875145"
      unitRef="USD">8726000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875146"
      unitRef="USD">35264000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569406">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;Year ending December 31,&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,033&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2025&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,033&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2026&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,033&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2027&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,033&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2028&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,033&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Thereafter&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;10,909&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total amortization expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,074&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875149"
      unitRef="USD">4033000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875150"
      unitRef="USD">4033000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875151"
      unitRef="USD">4033000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875152"
      unitRef="USD">4033000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875153"
      unitRef="USD">4033000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875154"
      unitRef="USD">10909000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875155"
      unitRef="USD">31074000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:LongTermDebtTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569407">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;7.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;CURRENT DEBT:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Interim Funding Agreement dated &lt;em style="font: inherit;"&gt; August&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;2,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; with Wells Fargo Equipment Finance, Inc. (&#x201c;WFEF&#x201d;), as amended &lt;em style="font: inherit;"&gt; January&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;23,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; &lt;em style="font: inherit;"&gt; March&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;15,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; &lt;em style="font: inherit;"&gt; July&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;21,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; and &lt;em style="font: inherit;"&gt; November&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;2,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; (together, the &#x201c;IFA&#x201d;), provides for aggregate interim funding advances up to $10.8&#160;million of equipment purchased for a new reinforced concrete pipe mill, to be converted into a term loan upon final delivery and acceptance of the financed equipment. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, the outstanding balance of the IFA was $10.8&#160;million, which is classified as a current liability since there is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; a firm commitment for long-term debt financing. The IFA bore interest at the term Secured Overnight Finance Rate (&#x201c;SOFR&#x201d;) plus 1.75% as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;. Effective &lt;em style="font: inherit;"&gt; November&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;2,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; the IFA bears interest at the SOFR Average plus 2.00%. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, the weighted-average interest rate for outstanding borrowings was 7.08% and 5.87%, respectively. The IFA requires monthly payments of accrued interest and grants a security interest in the equipment to WFEF. Effective &lt;em style="font: inherit;"&gt; November&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;2,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; the IFA requires the Company to maintain a consolidated senior leverage ratio &lt;em style="font: inherit;"&gt;no&lt;/em&gt; greater than 3.00 to &lt;em style="font: inherit;"&gt;1.00&lt;/em&gt; (subject to certain exceptions) and a minimum consolidated earnings before interest, taxes, depreciation, and amortization (&#x201c;EBITDA&#x201d;) (as defined in the IFA) of at least $35&#160;million for the &lt;em style="font: inherit;"&gt;four&lt;/em&gt; consecutive fiscal quarters most recently ended. The Company was in compliance with its financial covenants as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:LongTermDebtTextBlock>
    <us-gaap:DebtInstrumentFaceAmount
      contextRef="i_2022-08-02_DebtInstrumentAxis-InterimFundingAgreementifaMember"
      decimals="-5"
      id="c107875986"
      unitRef="USD">10800000</us-gaap:DebtInstrumentFaceAmount>
    <us-gaap:ShortTermBorrowings
      contextRef="i_2023-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember"
      decimals="-5"
      id="c107875990"
      unitRef="USD">10800000</us-gaap:ShortTermBorrowings>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2022-01-01_2022-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"
      decimals="4"
      id="c107875992"
      unitRef="Pure">0.0175</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2023-11-02_2023-11-02_DebtInstrumentAxis-InterimFundingAgreementifaMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"
      decimals="2"
      id="c107875997"
      unitRef="Pure">0.02</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtWeightedAverageInterestRate
      contextRef="i_2023-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember"
      decimals="4"
      id="c107876001"
      unitRef="Pure">0.0708</us-gaap:DebtWeightedAverageInterestRate>
    <us-gaap:DebtWeightedAverageInterestRate
      contextRef="i_2022-12-31_DebtInstrumentAxis-InterimFundingAgreementifaMember"
      decimals="4"
      id="c107876002"
      unitRef="Pure">0.0587</us-gaap:DebtWeightedAverageInterestRate>
    <nwpx:MaximumSeniorLeverageRatio
      contextRef="i_2023-11-02_DebtInstrumentAxis-InterimFundingAgreementifaMember"
      decimals="INF"
      id="c107876006"
      unitRef="Pure">3</nwpx:MaximumSeniorLeverageRatio>
    <nwpx:DebtInstrumentCovenantMinimumEbitda
      contextRef="i_2023-11-02_DebtInstrumentAxis-InterimFundingAgreementifaMember"
      decimals="-6"
      id="c107876008"
      unitRef="USD">35000000</nwpx:DebtInstrumentCovenantMinimumEbitda>
    <us-gaap:DebtDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569408">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;8.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;CREDIT AGREEMENT:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Credit Agreement dated &lt;em style="font: inherit;"&gt; June&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;30,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; with Wells Fargo Bank, National Association (&#x201c;Wells Fargo&#x201d;), as administrative agent, and the lenders from time to time party thereto, including the initial sole lender, Wells Fargo (the &#x201c;Lenders&#x201d;), as amended by the Incremental Amendment dated &lt;em style="font: inherit;"&gt; October&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;22,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2021,&lt;/em&gt; the Second Amendment to Credit Agreement dated &lt;em style="font: inherit;"&gt; April&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;29,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; and the Third Amendment to Credit Agreement dated &lt;em style="font: inherit;"&gt; June&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;29,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; (together, the &#x201c;Amended Credit Agreement&#x201d;), provides for a revolving loan, swingline loan, and letters of credit in the aggregate amount of up to $125&#160;million (&#x201c;Revolver Commitment&#x201d;), with an option for the Company to increase that amount by $50&#160;million, subject to provisions of the Amended Credit Agreement. The Amended Credit Agreement will expire, and all obligations outstanding will mature, on &lt;em style="font: inherit;"&gt; June&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;29,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2028.&lt;/em&gt; The Company &lt;em style="font: inherit;"&gt; may &lt;/em&gt;prepay outstanding amounts at its discretion without penalty at any time, subject to applicable notice requirements. In conjunction with entering into the Credit Agreement on &lt;em style="font: inherit;"&gt; June&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;30,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2021,&lt;/em&gt; the Company terminated the Credit Agreement with Wells Fargo dated &lt;em style="font: inherit;"&gt; October&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;25,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2018,&lt;/em&gt; as amended on &lt;em style="font: inherit;"&gt; January&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2020&lt;/em&gt; by the Consent and Amendment &lt;em style="font: inherit;"&gt;No.&lt;/em&gt;&#160;&lt;em style="font: inherit;"&gt;1&lt;/em&gt; to Credit Agreement with Wells Fargo (together, the &#x201c;Former Credit Agreement&#x201d;), and all outstanding debt under the Former Credit Agreement, including long-term debt, was repaid.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Amended Credit Agreement contains customary representations and warranties, as well as customary affirmative and negative covenants, events of default, and indemnification provisions in favor of the Lenders. The negative covenants include restrictions regarding the incurrence of liens and indebtedness, annual capital expenditures, certain investments, acquisitions, and dispositions, and other matters, all subject to certain exceptions. The Amended Credit Agreement requires the Company to regularly provide financial information to Wells Fargo and to maintain a consolidated senior leverage ratio &lt;em style="font: inherit;"&gt;no&lt;/em&gt; greater than 3.00 to &lt;em style="font: inherit;"&gt;1.00&lt;/em&gt; (subject to certain exceptions) and a minimum consolidated EBITDA (as defined in the Amended Credit Agreement) of at least $35&#160;million for the &lt;em style="font: inherit;"&gt;four&lt;/em&gt; consecutive fiscal quarters most recently ended. Pursuant to the Amended Credit Agreement, the Company has also agreed that it will &lt;em style="font: inherit;"&gt;not&lt;/em&gt; sell, assign, or otherwise dispose or encumber, any of its owned real property. The occurrence of an event of default could result in the acceleration of the obligations under the Amended Credit Agreement. The Company was in compliance with its financial covenants as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company&#x2019;s obligations under the Amended Credit Agreement are secured by a senior security interest in substantially all of the Company&#x2019;s and its subsidiaries&#x2019; assets.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Interest expense from revolving loan borrowings, current debt, long-term debt, and finance leases was $4.9&#160;million, net of amounts capitalized of $0.5&#160;million&#160;in &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, $3.6&#160;million, net of a nominal amount capitalized in &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and $1.2&#160;million, net of amounts capitalized of $0.1&#160;million in &lt;em style="font: inherit;"&gt;2021.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Line of Credit (Revolving and Swingline Loans)&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; under the Amended Credit Agreement, the Company had $54.5&#160;million of outstanding revolving loan borrowings, $1.1&#160;million of outstanding letters of credit, and additional borrowing capacity of approximately $69&#160;million. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; under the Amended Credit Agreement, the Company had $83.7&#160;million of outstanding revolving loan borrowings and $1.1&#160;million of outstanding letters of credit. Revolving loans under the Amended Credit Agreement bear interest at rates related to, at the Company&#x2019;s option and subject to the provisions of the Amended Credit Agreement, either: (i)&#160;Base Rate (as defined in the Amended Credit Agreement) plus the Applicable Margin&#x37e; (ii)&#160;Adjusted Term SOFR (as defined in the Amended Credit Agreement) plus the Applicable Margin&#x37e; or (iii)&#160;Adjusted Daily Simple SOFR (as defined in the Amended Credit Agreement) plus the Applicable Margin. The &#x201c;Applicable Margin&#x201d; is 1.75% to 2.35%, depending on the Company&#x2019;s Consolidated Senior Leverage Ratio (as defined in the Amended Credit Agreement) and the interest rate option chosen. Interest on outstanding revolving loans is payable monthly. Swingline loans under the Amended Credit Agreement bear interest at the Base Rate plus the Applicable Margin. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, the weighted-average interest rate for outstanding borrowings was 7.43% and 6.07%, respectively. The Amended Credit Agreement requires the payment of a commitment fee of between 0.30% and 0.40%, based on the amount by which the Revolver Commitment exceeds the average daily balance of outstanding borrowings (as defined in the Amended Credit Agreement). Such fee is payable monthly in arrears. The Company is also obligated to pay additional fees customary for credit facilities of this size and type.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:DebtDisclosureTextBlock>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2021-10-22_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="-6"
      id="c107876021"
      unitRef="USD">125000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityIncreaseDecreaseForPeriodNet
      contextRef="d_2023-01-01_2023-12-31_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="-7"
      id="c107876022"
      unitRef="USD">50000000</us-gaap:LineOfCreditFacilityIncreaseDecreaseForPeriodNet>
    <nwpx:MaximumSeniorLeverageRatioRequirement
      contextRef="i_2021-10-22_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="INF"
      id="c107876034"
      unitRef="Pure">3</nwpx:MaximumSeniorLeverageRatioRequirement>
    <nwpx:DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization
      contextRef="d_2021-10-22_2021-10-22_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="-6"
      id="c107876036"
      unitRef="USD">35000000</nwpx:DebtInstrumentCovenantMinimumConsolidatedEarningsBeforeInterestTaxesDepreciationAndAmortization>
    <nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-5"
      id="c107876042"
      unitRef="USD">4900000</nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized>
    <us-gaap:InterestCostsCapitalized
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-5"
      id="c107876043"
      unitRef="USD">500000</us-gaap:InterestCostsCapitalized>
    <nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-5"
      id="c107876045"
      unitRef="USD">3600000</nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized>
    <nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-5"
      id="c107876047"
      unitRef="USD">1200000</nwpx:InterestExpenseDebtAndFinanceLeasesNetOfAmountsCapitalized>
    <us-gaap:InterestCostsCapitalized
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-5"
      id="c107876048"
      unitRef="USD">100000</us-gaap:InterestCostsCapitalized>
    <us-gaap:LineOfCredit
      contextRef="i_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="-5"
      id="c107876052"
      unitRef="USD">54500000</us-gaap:LineOfCredit>
    <us-gaap:LettersOfCreditOutstandingAmount
      contextRef="i_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="-5"
      id="c107876053"
      unitRef="USD">1100000</us-gaap:LettersOfCreditOutstandingAmount>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="-6"
      id="c107876054"
      unitRef="USD">69000000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:LineOfCredit
      contextRef="i_2022-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="-5"
      id="c107876057"
      unitRef="USD">83700000</us-gaap:LineOfCredit>
    <us-gaap:LettersOfCreditOutstandingAmount
      contextRef="i_2022-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="-5"
      id="c107876058"
      unitRef="USD">1100000</us-gaap:LettersOfCreditOutstandingAmount>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MinimumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"
      decimals="4"
      id="c107876059"
      unitRef="Pure">0.0175</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MaximumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"
      decimals="4"
      id="c107876060"
      unitRef="Pure">0.0235</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtWeightedAverageInterestRate
      contextRef="i_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="4"
      id="c107876064"
      unitRef="Pure">0.0743</us-gaap:DebtWeightedAverageInterestRate>
    <us-gaap:DebtWeightedAverageInterestRate
      contextRef="i_2022-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember"
      decimals="4"
      id="c107876065"
      unitRef="Pure">0.0607</us-gaap:DebtWeightedAverageInterestRate>
    <us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage
      contextRef="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MinimumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"
      decimals="3"
      id="c107876066"
      unitRef="Pure">0.003</us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage>
    <us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage
      contextRef="d_2023-01-01_2023-12-31_CreditFacilityAxis-RevolvingCreditFacilityMember_LineOfCreditFacilityAxis-WellsFargoBankNAMember_RangeAxis-MaximumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"
      decimals="3"
      id="c107876067"
      unitRef="Pure">0.004</us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage>
    <nwpx:LesseeLeaseDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569409">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;9.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;LEASES:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table summarizes the Company&#x2019;s leases recorded on the Consolidated Balance Sheets (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Right-of-use assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Finance leases, net, included in Property and equipment (1)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;7,092&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,618&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;88,155&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;93,124&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total right-of-use assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;95,247&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;95,742&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Lease liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;7,481&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,037&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;90,216&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;94,174&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;97,697&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;97,211&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 27pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"&gt;(&lt;em style="font: inherit;"&gt;1&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Finance lease right-of-use assets are presented net of accumulated amortization of $1.4&#160;million and $1.2&#160;million as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, respectively.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;Lease cost consists of the following (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Finance lease cost:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Amortization of right-of-use assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;795&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;577&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;413&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Interest on lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;266&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;148&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;90&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Operating lease cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;7,765&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;7,770&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,627&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Short-term lease cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,402&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,000&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;993&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Variable lease cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;313&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;251&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;158&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total lease cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,541&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9,746&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;6,281&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;The future maturities of lease liabilities as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; are as follows (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Finance Leases&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Operating Leases&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,212&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,874&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2025&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,923&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,913&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2026&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,847&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,583&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2027&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,614&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,192&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2028&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,147&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,308&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Thereafter&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;76,453&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total lease payments&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;8,743&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;109,323&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Amount representing interest&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,262&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(19,107&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Present value of lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;7,481&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;90,216&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Current portion of lease liabilities (1)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,721&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(4,933&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Long-term lease liabilities (2)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;5,760&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;85,283&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 18pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"&gt;(&lt;em style="font: inherit;"&gt;1&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Current portion of finance lease liabilities are included in Accrued liabilities.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 18pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"&gt;(&lt;em style="font: inherit;"&gt;2&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Long-term finance lease liabilities, less current portion are included in Other long-term liabilities.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;The following table summarizes the lease terms and discount rates for the lease liabilities:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Weighted-average remaining lease term (years)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3.90&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3.52&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;16.73&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;17.83&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Weighted-average discount rate&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6.93&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;5.44&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2.17&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2.19&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;The following table presents other information related to the operating and finance leases (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Cash paid for amounts included in the measurement of lease liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating cash flows from finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(266&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(148&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(90&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating cash flows from operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(6,930&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(6,818&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(4,142&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Financing cash flows from finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(826&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(597&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(415&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Right-of-use assets obtained in exchange for finance lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;5,270&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,466&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;853&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Right-of-use assets obtained in exchange for operating lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;952&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;568&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;16,043&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </nwpx:LesseeLeaseDisclosureTextBlock>
    <nwpx:LesseeLeaseAssetsAndLiabilitiesTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569410">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Right-of-use assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Finance leases, net, included in Property and equipment (1)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;7,092&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,618&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;88,155&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;93,124&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total right-of-use assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;95,247&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;95,742&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Lease liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;7,481&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,037&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;90,216&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;94,174&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;97,697&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;97,211&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </nwpx:LesseeLeaseAssetsAndLiabilitiesTableTextBlock>
    <us-gaap:FinanceLeaseRightOfUseAsset
      contextRef="i_2023-12-31_BalanceSheetLocationAxis-PropertyAndEquipmentMember"
      decimals="-3"
      id="c107875161"
      unitRef="USD">7092000</us-gaap:FinanceLeaseRightOfUseAsset>
    <us-gaap:FinanceLeaseRightOfUseAsset
      contextRef="i_2022-12-31_BalanceSheetLocationAxis-PropertyAndEquipmentMember"
      decimals="-3"
      id="c107875162"
      unitRef="USD">2618000</us-gaap:FinanceLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875163"
      unitRef="USD">88155000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875164"
      unitRef="USD">93124000</us-gaap:OperatingLeaseRightOfUseAsset>
    <nwpx:LeaseRightOfUseAsset
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875165"
      unitRef="USD">95247000</nwpx:LeaseRightOfUseAsset>
    <nwpx:LeaseRightOfUseAsset
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875166"
      unitRef="USD">95742000</nwpx:LeaseRightOfUseAsset>
    <us-gaap:FinanceLeaseLiability
      contextRef="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilitiesAndOtherLongtermLiabilitiesMember"
      decimals="-3"
      id="c107875167"
      unitRef="USD">7481000</us-gaap:FinanceLeaseLiability>
    <us-gaap:FinanceLeaseLiability
      contextRef="i_2022-12-31_BalanceSheetLocationAxis-AccruedLiabilitiesAndOtherLongtermLiabilitiesMember"
      decimals="-3"
      id="c107875168"
      unitRef="USD">3037000</us-gaap:FinanceLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875169"
      unitRef="USD">90216000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875170"
      unitRef="USD">94174000</us-gaap:OperatingLeaseLiability>
    <nwpx:LeaseLiability
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875171"
      unitRef="USD">97697000</nwpx:LeaseLiability>
    <nwpx:LeaseLiability
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875172"
      unitRef="USD">97211000</nwpx:LeaseLiability>
    <us-gaap:FinanceLeaseRightOfUseAssetAccumulatedAmortization
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107876070"
      unitRef="USD">1400000</us-gaap:FinanceLeaseRightOfUseAssetAccumulatedAmortization>
    <us-gaap:FinanceLeaseRightOfUseAssetAccumulatedAmortization
      contextRef="i_2022-12-31"
      decimals="-5"
      id="c107876071"
      unitRef="USD">1200000</us-gaap:FinanceLeaseRightOfUseAssetAccumulatedAmortization>
    <us-gaap:LeaseCostTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569411">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Finance lease cost:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Amortization of right-of-use assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;795&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;577&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;413&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Interest on lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;266&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;148&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;90&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Operating lease cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;7,765&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;7,770&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,627&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Short-term lease cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,402&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,000&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;993&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Variable lease cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;313&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;251&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;158&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total lease cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,541&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9,746&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;6,281&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:LeaseCostTableTextBlock>
    <us-gaap:FinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875181"
      unitRef="USD">795000</us-gaap:FinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:FinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875182"
      unitRef="USD">577000</us-gaap:FinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:FinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875183"
      unitRef="USD">413000</us-gaap:FinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:FinanceLeaseInterestExpense
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875184"
      unitRef="USD">266000</us-gaap:FinanceLeaseInterestExpense>
    <us-gaap:FinanceLeaseInterestExpense
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875185"
      unitRef="USD">148000</us-gaap:FinanceLeaseInterestExpense>
    <us-gaap:FinanceLeaseInterestExpense
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-4"
      id="c107875186"
      unitRef="USD">90000</us-gaap:FinanceLeaseInterestExpense>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875187"
      unitRef="USD">7765000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-4"
      id="c107875188"
      unitRef="USD">7770000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875189"
      unitRef="USD">4627000</us-gaap:OperatingLeaseCost>
    <us-gaap:ShortTermLeaseCost
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875190"
      unitRef="USD">1402000</us-gaap:ShortTermLeaseCost>
    <us-gaap:ShortTermLeaseCost
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-6"
      id="c107875191"
      unitRef="USD">1000000</us-gaap:ShortTermLeaseCost>
    <us-gaap:ShortTermLeaseCost
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875192"
      unitRef="USD">993000</us-gaap:ShortTermLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875193"
      unitRef="USD">313000</us-gaap:VariableLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875194"
      unitRef="USD">251000</us-gaap:VariableLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875195"
      unitRef="USD">158000</us-gaap:VariableLeaseCost>
    <us-gaap:LeaseCost
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875196"
      unitRef="USD">10541000</us-gaap:LeaseCost>
    <us-gaap:LeaseCost
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875197"
      unitRef="USD">9746000</us-gaap:LeaseCost>
    <us-gaap:LeaseCost
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875198"
      unitRef="USD">6281000</us-gaap:LeaseCost>
    <nwpx:LesseeLiabilityMaturityTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569412">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Finance Leases&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Operating Leases&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,212&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,874&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2025&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,923&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,913&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2026&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,847&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,583&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2027&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,614&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,192&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;2028&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,147&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,308&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Thereafter&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;76,453&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total lease payments&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;8,743&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;109,323&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Amount representing interest&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,262&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(19,107&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Present value of lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;7,481&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;90,216&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Current portion of lease liabilities (1)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,721&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(4,933&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Long-term lease liabilities (2)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;5,760&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;85,283&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </nwpx:LesseeLiabilityMaturityTableTextBlock>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875202"
      unitRef="USD">2212000</us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875203"
      unitRef="USD">6874000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875204"
      unitRef="USD">1923000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875205"
      unitRef="USD">6913000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875206"
      unitRef="USD">1847000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875207"
      unitRef="USD">6583000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875208"
      unitRef="USD">1614000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875209"
      unitRef="USD">6192000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875210"
      unitRef="USD">1147000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875211"
      unitRef="USD">6308000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875212"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875213"
      unitRef="USD">76453000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:FinanceLeaseLiabilityPaymentsDue
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875214"
      unitRef="USD">8743000</us-gaap:FinanceLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875215"
      unitRef="USD">109323000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875216"
      unitRef="USD">1262000</us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875217"
      unitRef="USD">19107000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:FinanceLeaseLiability
      contextRef="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilitiesAndOtherLongtermLiabilitiesMember"
      decimals="-3"
      id="c107875218"
      unitRef="USD">7481000</us-gaap:FinanceLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875219"
      unitRef="USD">90216000</us-gaap:OperatingLeaseLiability>
    <us-gaap:FinanceLeaseLiabilityCurrent
      contextRef="i_2023-12-31_BalanceSheetLocationAxis-AccruedLiabilityMember"
      decimals="-3"
      id="c107875220"
      unitRef="USD">1721000</us-gaap:FinanceLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875221"
      unitRef="USD">4933000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:FinanceLeaseLiabilityNoncurrent
      contextRef="i_2023-12-31_BalanceSheetLocationAxis-OtherLiabilitiesMember"
      decimals="-4"
      id="c107875222"
      unitRef="USD">5760000</us-gaap:FinanceLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875223"
      unitRef="USD">85283000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <nwpx:LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569413">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Weighted-average remaining lease term (years)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3.90&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3.52&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;16.73&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;17.83&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Weighted-average discount rate&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6.93&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;5.44&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2.17&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2.19&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </nwpx:LeaseTermsAndDiscountRatesForLeaseLiabilitiesTableTextBlock>
    <us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1 contextRef="i_2023-12-31" id="c107875228">P3Y10M24D</us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1 contextRef="i_2022-12-31" id="c107875229">P3Y6M7D</us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1 contextRef="i_2023-12-31" id="c107875230">P16Y8M23D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1 contextRef="i_2022-12-31" id="c107875231">P17Y9M29D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2023-12-31"
      decimals="4"
      id="c107875232"
      unitRef="Pure">0.0693</us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2022-12-31"
      decimals="4"
      id="c107875233"
      unitRef="Pure">0.0544</us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2023-12-31"
      decimals="4"
      id="c107875234"
      unitRef="Pure">0.0217</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2022-12-31"
      decimals="4"
      id="c107875235"
      unitRef="Pure">0.0219</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <nwpx:OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569414">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Cash paid for amounts included in the measurement of lease liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating cash flows from finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(266&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(148&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(90&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Operating cash flows from operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(6,930&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(6,818&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(4,142&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Financing cash flows from finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(826&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(597&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(415&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Right-of-use assets obtained in exchange for finance lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;5,270&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,466&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;853&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Right-of-use assets obtained in exchange for operating lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;952&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;568&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;16,043&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </nwpx:OtherInformationRelatedToOperatingAndFinanceLeasesTableTextBlock>
    <us-gaap:FinanceLeaseInterestPaymentOnLiability
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875244"
      unitRef="USD">266000</us-gaap:FinanceLeaseInterestPaymentOnLiability>
    <us-gaap:FinanceLeaseInterestPaymentOnLiability
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875245"
      unitRef="USD">148000</us-gaap:FinanceLeaseInterestPaymentOnLiability>
    <us-gaap:FinanceLeaseInterestPaymentOnLiability
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-4"
      id="c107875246"
      unitRef="USD">90000</us-gaap:FinanceLeaseInterestPaymentOnLiability>
    <us-gaap:OperatingLeasePayments
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-4"
      id="c107875247"
      unitRef="USD">6930000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875248"
      unitRef="USD">6818000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875249"
      unitRef="USD">4142000</us-gaap:OperatingLeasePayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875250"
      unitRef="USD">826000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875251"
      unitRef="USD">597000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875252"
      unitRef="USD">415000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-4"
      id="c107875253"
      unitRef="USD">5270000</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875254"
      unitRef="USD">1466000</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875255"
      unitRef="USD">853000</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875256"
      unitRef="USD">952000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875257"
      unitRef="USD">568000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875258"
      unitRef="USD">16043000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:FairValueDisclosuresTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569415">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;10.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;FAIR VALUE MEASUREMENTS:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Fair value is defined as the price that would be received to sell an asset or paid to transfer a liability, in the principal or most advantageous market for the asset or liability, in an orderly transaction between market participants at the measurement date.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The authoritative guidance establishes a fair value hierarchy that prioritizes the inputs to valuation techniques used to measure fair value into &lt;em style="font: inherit;"&gt;three&lt;/em&gt; broad levels. These levels are: Level&#160;&lt;em style="font: inherit;"&gt;1&lt;/em&gt; (inputs are quoted prices in active markets for identical assets or liabilities); Level&#160;&lt;em style="font: inherit;"&gt;2&lt;/em&gt; (inputs are other than quoted prices that are observable, either directly or indirectly through corroboration with observable market data); and Level&#160;&lt;em style="font: inherit;"&gt;3&lt;/em&gt; (inputs are unobservable, with little or &lt;em style="font: inherit;"&gt;no&lt;/em&gt; market data that exists, such as internal financial forecasts). The Company is required to maximize the use of observable inputs and minimize the use of unobservable inputs when measuring fair value.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table summarizes information regarding the Company&#x2019;s financial assets and liabilities that are measured at fair value on a recurring basis (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 1&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 2&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 3&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;As of December 31, 2023&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Financial assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Deferred compensation plan&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,912&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,391&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;521&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Foreign currency forward contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;42&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;42&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Interest rate swaps&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;326&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;326&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt; text-indent: -9pt;"&gt;Total financial assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,280&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,391&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;889&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Financial liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Foreign currency forward contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(115&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(115&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;As of December 31, 2022&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Financial assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Deferred compensation plan&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,587&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,090&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;497&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Foreign currency forward contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;728&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;728&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Interest rate swaps&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;862&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;862&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt; text-indent: -9pt;"&gt;Total financial assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;5,177&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,090&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,087&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Financial liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Foreign currency forward contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(80&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(80&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The deferred compensation plan assets consist of cash and several publicly traded stock and bond mutual funds, valued using quoted market prices in active markets, classified as Level&#160;&lt;em style="font: inherit;"&gt;1&lt;/em&gt; within the fair value hierarchy, as well as guaranteed investment contracts, valued at principal plus interest credited at contract rates, classified as Level&#160;&lt;em style="font: inherit;"&gt;2&lt;/em&gt; within the fair value hierarchy. Deferred compensation plan assets are included within Other assets in the Consolidated Balance Sheets.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The foreign currency forward contracts and interest rate swaps are derivatives valued using various pricing models or discounted cash flow analyses that incorporate observable market parameters, such as interest rate yield curves and currency rates, and are classified as Level&#160;&lt;em style="font: inherit;"&gt;2&lt;/em&gt; within the fair value hierarchy. Derivative valuations incorporate credit risk adjustments that are necessary to reflect the probability of default by the counterparty or the Company. The foreign currency forward contracts and interest rate swaps are presented at their gross fair values. Foreign currency forward contract and interest rate swap assets are included within Prepaid expenses and other and foreign currency forward contract liabilities are included within Accrued liabilities in the Consolidated Balance Sheets.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The net carrying amounts of cash and cash equivalents, trade and other receivables, accounts payable, accrued liabilities, and current debt approximate fair value due to the short-term nature of these instruments. The net carrying amount of the borrowings on the line of credit approximates fair value due to its variable interest rate based on market.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569416">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 1&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 2&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 3&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;As of December 31, 2023&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Financial assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Deferred compensation plan&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,912&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,391&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;521&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Foreign currency forward contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;42&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;42&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Interest rate swaps&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;326&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;326&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt; text-indent: -9pt;"&gt;Total financial assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,280&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,391&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;889&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Financial liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Foreign currency forward contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(115&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(115&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;&lt;b&gt;As of December 31, 2022&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Financial assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Deferred compensation plan&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,587&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,090&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;497&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Foreign currency forward contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;728&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;728&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Interest rate swaps&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;862&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;862&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt; text-indent: -9pt;"&gt;Total financial assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;5,177&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,090&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,087&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Financial liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Foreign currency forward contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(80&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(80&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock>
    <us-gaap:DeferredCompensationPlanAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember"
      decimals="-3"
      id="c107875264"
      unitRef="USD">3912000</us-gaap:DeferredCompensationPlanAssets>
    <us-gaap:DeferredCompensationPlanAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"
      decimals="-3"
      id="c107875265"
      unitRef="USD">3391000</us-gaap:DeferredCompensationPlanAssets>
    <us-gaap:DeferredCompensationPlanAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"
      decimals="-3"
      id="c107875266"
      unitRef="USD">521000</us-gaap:DeferredCompensationPlanAssets>
    <us-gaap:DeferredCompensationPlanAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"
      decimals="-3"
      id="c107875267"
      unitRef="USD">0</us-gaap:DeferredCompensationPlanAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107875268"
      unitRef="USD">42000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"
      decimals="-3"
      id="c107875269"
      unitRef="USD">0</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"
      decimals="-3"
      id="c107875270"
      unitRef="USD">42000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"
      decimals="-3"
      id="c107875271"
      unitRef="USD">0</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107875272"
      unitRef="USD">326000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"
      decimals="-3"
      id="c107875273"
      unitRef="USD">0</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"
      decimals="-3"
      id="c107875274"
      unitRef="USD">326000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"
      decimals="-3"
      id="c107875275"
      unitRef="USD">0</us-gaap:DerivativeAssets>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107875276"
      unitRef="USD">4280000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"
      decimals="-3"
      id="c107875277"
      unitRef="USD">3391000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"
      decimals="-3"
      id="c107875278"
      unitRef="USD">889000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2023-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"
      decimals="-3"
      id="c107875279"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:DerivativeLiabilities
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107875280"
      unitRef="USD">115000</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"
      decimals="-3"
      id="c107875281"
      unitRef="USD">-0</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"
      decimals="-3"
      id="c107875282"
      unitRef="USD">115000</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"
      decimals="-3"
      id="c107875283"
      unitRef="USD">-0</us-gaap:DerivativeLiabilities>
    <us-gaap:DeferredCompensationPlanAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember"
      decimals="-3"
      id="c107875284"
      unitRef="USD">3587000</us-gaap:DeferredCompensationPlanAssets>
    <us-gaap:DeferredCompensationPlanAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"
      decimals="-4"
      id="c107875285"
      unitRef="USD">3090000</us-gaap:DeferredCompensationPlanAssets>
    <us-gaap:DeferredCompensationPlanAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"
      decimals="-3"
      id="c107875286"
      unitRef="USD">497000</us-gaap:DeferredCompensationPlanAssets>
    <us-gaap:DeferredCompensationPlanAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-DeferredCompensationPlanMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"
      decimals="-3"
      id="c107875287"
      unitRef="USD">0</us-gaap:DeferredCompensationPlanAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107875288"
      unitRef="USD">728000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"
      decimals="-3"
      id="c107875289"
      unitRef="USD">0</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"
      decimals="-3"
      id="c107875290"
      unitRef="USD">728000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"
      decimals="-3"
      id="c107875291"
      unitRef="USD">0</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107875292"
      unitRef="USD">862000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"
      decimals="-3"
      id="c107875293"
      unitRef="USD">0</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"
      decimals="-3"
      id="c107875294"
      unitRef="USD">862000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"
      decimals="-3"
      id="c107875295"
      unitRef="USD">0</us-gaap:DerivativeAssets>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875296"
      unitRef="USD">5177000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"
      decimals="-4"
      id="c107875297"
      unitRef="USD">3090000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"
      decimals="-3"
      id="c107875298"
      unitRef="USD">2087000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2022-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"
      decimals="-3"
      id="c107875299"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:DerivativeLiabilities
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-4"
      id="c107875300"
      unitRef="USD">80000</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member"
      decimals="-3"
      id="c107875301"
      unitRef="USD">-0</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member"
      decimals="-4"
      id="c107875302"
      unitRef="USD">80000</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member"
      decimals="-3"
      id="c107875303"
      unitRef="USD">-0</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569417">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;11.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;DERIVATIVE INSTRUMENTS AND HEDGING ACTIVITIES:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;For each derivative entered into in which the Company seeks to obtain cash flow hedge accounting treatment, the Company formally documents all relationships between hedging instruments and hedged items, as well as its risk management objective and strategy for undertaking the hedge transaction, the nature of the risk being hedged, how the hedging instrument&#x2019;s effectiveness in offsetting the hedged risk will be assessed prospectively and retrospectively, and a description of the method of measuring ineffectiveness. This process includes linking all derivatives to specific firm commitments or forecasted transactions and designating the derivatives as cash flow hedges. The Company also formally assesses, both at the hedge&#x2019;s inception and on an ongoing basis, whether the derivatives that are used in hedging transactions are highly effective in offsetting changes in cash flows of hedged items. The effective portion of these hedged items is reflected in Unrealized gain (loss) on cash flow hedges on the Consolidated Statements of Comprehensive Income. If it is determined that a derivative is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; highly effective, or that it has ceased to be a highly effective hedge, the Company is required to discontinue hedge accounting with respect to that derivative prospectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, the total notional amount of the foreign currency forward contracts was $5.1&#160;million (CAD$6.7&#160;million) and $1.2&#160;million (EUR&#x20ac;1.1&#160;million), which included $4.9&#160;million (CAD$6.4&#160;million) and $1.2&#160;million (EUR&#x20ac;1.1&#160;million) of foreign currency forward contracts &lt;em style="font: inherit;"&gt;not&lt;/em&gt; designated as cash flow hedges. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, the total notional amount of the foreign currency forward contracts was $17.1&#160;million (CAD$23.2&#160;million) and $1.1&#160;million (EUR&#x20ac;1.1&#160;million), which included $0.3&#160;million (CAD$0.4&#160;million) of foreign currency forward contracts &lt;em style="font: inherit;"&gt;not&lt;/em&gt; designated as cash flow hedges. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, the Company&#x2019;s foreign currency forward contracts mature at various dates through &lt;em style="font: inherit;"&gt; April 2025 &lt;/em&gt;and are subject to an enforceable master netting arrangement.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has entered into interest rate swaps which effectively convert a portion of its variable-rate debt to fixed-rate debt, and are designated as cash flow hedges. The Company receives floating interest payments monthly based on SOFR and pays a fixed rate of 1.941% to the counterparty on the total notional amount of $6.7&#160;million and $26.7&#160;million as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, respectively, which amortizes ratably on a monthly basis to &lt;em style="font: inherit;"&gt;zero&lt;/em&gt; by the &lt;em style="font: inherit;"&gt; April 2024 &lt;/em&gt;maturity date.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;On &lt;em style="font: inherit;"&gt; August&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;9,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; the Company entered into an interest rate swap transaction which began &lt;em style="font: inherit;"&gt; April&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;3,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023.&lt;/em&gt; The Company receives floating interest payments monthly based on the SOFR Average &lt;em style="font: inherit;"&gt;30&lt;/em&gt;&#160;day and pays a fixed rate of 2.96% to the counterparty on the total notional amount of $13.0&#160;million as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, which amortizes ratably on a monthly basis to &lt;em style="font: inherit;"&gt;zero&lt;/em&gt; by the &lt;em style="font: inherit;"&gt; April 2028 &lt;/em&gt;maturity date.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table summarizes the gains (losses) recognized on derivatives in the Consolidated Financial Statements (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Foreign currency forward contracts:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Net sales&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(708&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;660&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;"&gt;Property and equipment&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;(109&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;(680&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Interest rate swaps:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;"&gt;Interest expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;719&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;39&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(98&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;19&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, unrealized pretax gains (losses) on outstanding cash flow hedges in Accumulated other comprehensive loss was $0.3&#160;million, of which approximately $0 and $0.3&#160;million are expected to be reclassified to Net sales and Interest expense, respectively, within the next &lt;em style="font: inherit;"&gt;twelve&lt;/em&gt; months as a result of underlying hedged transactions also being recorded in these line items. See Note&#160;&lt;em style="font: inherit;"&gt;18&lt;/em&gt; &#x201c;Accumulated Other Comprehensive Loss&#x201d; for additional quantitative information regarding foreign currency forward contract and interest rate swap gains and losses.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"
      decimals="-5"
      id="c107876095"
      unitRef="USD">5100000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"
      decimals="-5"
      id="c107876096"
      unitRef="CAD">6700000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"
      decimals="-5"
      id="c107876097"
      unitRef="USD">1200000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"
      decimals="-5"
      id="c107876098"
      unitRef="EUR">1100000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember"
      decimals="-5"
      id="c107876099"
      unitRef="USD">4900000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember"
      decimals="-5"
      id="c107876100"
      unitRef="CAD">6400000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-NondesignatedMember"
      decimals="-5"
      id="c107876101"
      unitRef="USD">1200000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-NondesignatedMember"
      decimals="-5"
      id="c107876102"
      unitRef="EUR">1100000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"
      decimals="-5"
      id="c107876106"
      unitRef="USD">17100000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"
      decimals="-5"
      id="c107876107"
      unitRef="CAD">23200000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"
      decimals="-5"
      id="c107876108"
      unitRef="USD">1100000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForward1Member_HedgingDesignationAxis-DesignatedAsHedgingInstrumentMember"
      decimals="-5"
      id="c107876109"
      unitRef="EUR">1100000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember"
      decimals="-5"
      id="c107876110"
      unitRef="USD">300000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember"
      decimals="-5"
      id="c107876111"
      unitRef="CAD">400000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeFixedInterestRate
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember"
      decimals="5"
      id="c107876115"
      unitRef="Pure">0.01941</us-gaap:DerivativeFixedInterestRate>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember"
      decimals="-5"
      id="c107876116"
      unitRef="USD">6700000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-The1941InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember"
      decimals="-5"
      id="c107876117"
      unitRef="USD">26700000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:DerivativeFixedInterestRate
      contextRef="i_2023-04-03_DerivativeInstrumentRiskAxis-The296InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember"
      decimals="4"
      id="c107876127"
      unitRef="Pure">0.0296</us-gaap:DerivativeFixedInterestRate>
    <us-gaap:DerivativeNotionalAmount
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-The296InterestRateSwapMember_DerivativeInstrumentsGainLossByHedgingRelationshipAxis-CashFlowHedgingMember"
      decimals="-6"
      id="c107876128"
      unitRef="USD">13000000</us-gaap:DerivativeNotionalAmount>
    <us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569418">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Foreign currency forward contracts:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Net sales&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(708&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;660&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;"&gt;Property and equipment&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;(109&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;(680&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Interest rate swaps:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;"&gt;Interest expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;719&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;39&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(98&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;19&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember"
      decimals="-3"
      id="c107875316"
      unitRef="USD">-708000</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember"
      decimals="-4"
      id="c107875317"
      unitRef="USD">660000</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-SalesMember"
      decimals="-3"
      id="c107875318"
      unitRef="USD">9000</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember"
      decimals="-3"
      id="c107875319"
      unitRef="USD">-109000</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember"
      decimals="-4"
      id="c107875320"
      unitRef="USD">-680000</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-PropertyAndEquipmentMember"
      decimals="-3"
      id="c107875321"
      unitRef="USD">0</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember"
      decimals="-3"
      id="c107875322"
      unitRef="USD">719000</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember"
      decimals="-3"
      id="c107875323"
      unitRef="USD">39000</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_HedgingDesignationAxis-NondesignatedMember_IncomeStatementLocationAxis-InterestExpenseMember"
      decimals="-3"
      id="c107875324"
      unitRef="USD">0</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2023-01-01_2023-12-31_HedgingDesignationAxis-NondesignatedMember"
      decimals="-3"
      id="c107875325"
      unitRef="USD">-98000</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2022-01-01_2022-12-31_HedgingDesignationAxis-NondesignatedMember"
      decimals="-3"
      id="c107875326"
      unitRef="USD">19000</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet
      contextRef="d_2021-01-01_2021-12-31_HedgingDesignationAxis-NondesignatedMember"
      decimals="-3"
      id="c107875327"
      unitRef="USD">9000</us-gaap:DerivativeInstrumentsNotDesignatedAsHedgingInstrumentsGainLossNet>
    <us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-5"
      id="c107876134"
      unitRef="USD">300000</us-gaap:OtherComprehensiveIncomeLossCashFlowHedgeGainLossBeforeReclassificationAndTax>
    <us-gaap:CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths
      contextRef="d_2023-01-01_2023-12-31_ReclassificationTypeAxis-ReclassifiedToNetSalesMember"
      decimals="-3"
      id="c107876135"
      unitRef="USD">0</us-gaap:CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths>
    <us-gaap:CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths
      contextRef="d_2023-01-01_2023-12-31_ReclassificationTypeAxis-ReclassifiedToInterestExpenseMember"
      decimals="-5"
      id="c107876136"
      unitRef="USD">300000</us-gaap:CashFlowHedgeGainLossToBeReclassifiedWithinTwelveMonths>
    <us-gaap:StockholdersEquityNoteDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569419">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;12.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;STOCKHOLDERS&lt;/b&gt;&#x2019; &lt;b&gt;EQUITY:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;i&gt;At-the-Market Offering&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;On &lt;em style="font: inherit;"&gt; September&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;2,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; the Company entered into an Open Market Sale Agreement (the &#x201c;At-the-Market Offering&#x201d;) with Jefferies LLC (&#x201c;Jefferies&#x201d;) which provided for the issuance and sale of shares of its common stock, par value $0.01 per share, having aggregate offering sales proceeds of up to $50&#160;million from time to time through Jefferies as its sales agent. On &lt;em style="font: inherit;"&gt; October&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;30,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; the Company provided written notice terminating the Open Market Sale Agreement in accordance with its terms. &lt;em style="font: inherit;"&gt;No&lt;/em&gt; proceeds were raised under the At-the-Market Offering during the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; or &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;i&gt;Share Repurchase Program&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;On &lt;em style="font: inherit;"&gt; November&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;2,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; the Company announced its authorization of a share repurchase program of up to $30&#160;million of its outstanding common stock. The program does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; commit to any particular timing or quantity of purchases, and the program &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be suspended or discontinued at any time. Under the program, shares &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be purchased in open market, including through Rule&#160;&lt;em style="font: inherit;"&gt;10b5&#x2011;1&lt;/em&gt; of the Securities Exchange Act of &lt;em style="font: inherit;"&gt;1934,&lt;/em&gt; as amended, or in privately negotiated transactions administered by its broker, D.A. Davidson Companies. At this time, the Company has elected to limit its share repurchase transactions to only those under the Rule&#160;&lt;em style="font: inherit;"&gt;10b5&#x2011;1&lt;/em&gt; trading plan it executed in &lt;em style="font: inherit;"&gt; November 2023, &lt;/em&gt;which the Company believes considers its liquidity, including availability of borrowings and covenant compliance under the Amended Credit Agreement, and other capital allocation priorities of the business. The Company&#x2019;s Rule&#160;&lt;em style="font: inherit;"&gt;10b5&#x2011;1&lt;/em&gt; trading plan designates up to $10&#160;million for repurchases and provides for daily share repurchases that fluctuate with changes in the trading price of its common stock.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;During the year ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, the Company repurchased approximately 29,000&#160;shares of the Company&#x2019;s common stock for an aggregate amount of $0.8&#160;million. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, $29.2&#160;million of the share repurchase authorization remained available for repurchases under this program. There were no share repurchases authorized during the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; or &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:StockholdersEquityNoteDisclosureTextBlock>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2022-09-22"
      decimals="INF"
      id="c107876142"
      unitRef="USDPerShare">0.01</us-gaap:CommonStockParOrStatedValuePerShare>
    <nwpx:EquityOfferingMaximumOfferingAmount
      contextRef="i_2022-09-02_SubsidiarySaleOfStockAxis-AtthemarketOfferingMember"
      decimals="-7"
      id="c107876143"
      unitRef="USD">50000000</nwpx:EquityOfferingMaximumOfferingAmount>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="i_2023-11-02"
      decimals="-7"
      id="c107876152"
      unitRef="USD">30000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <nwpx:Rule10b51TradingPlanDesignatedAmount
      contextRef="i_2023-12-01"
      decimals="-7"
      id="c107876158"
      unitRef="USD">10000000</nwpx:Rule10b51TradingPlanDesignatedAmount>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2023-01-01_2023-12-31_ShareRepurchaseProgramAxis-ShareRepurchaseProgramMember"
      decimals="INF"
      id="c107876162"
      unitRef="Share">29000</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2023-01-01_2023-12-31_ShareRepurchaseProgramAxis-ShareRepurchaseProgramMember"
      decimals="-5"
      id="c107876163"
      unitRef="USD">800000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107876166"
      unitRef="USD">29200000</us-gaap:StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107876167"
      unitRef="USD">0</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569420">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;13.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;RETIREMENT PLANS:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Defined Contribution Plan&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has a defined contribution retirement plan that covers substantially all of its employees and provides for a Company match of up to 50% of the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; 8% of employee contributions to the plan, subject to certain limitations.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;ParkUSA had a defined contribution retirement plan that covered substantially all of its employees and provided for a match of up to 100% of the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; 4% of employee contributions to the plan, subject to certain limitations. After the acquisition of ParkUSA on &lt;em style="font: inherit;"&gt; October&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;5,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2021,&lt;/em&gt; employees of ParkUSA continued to contribute to this plan until it was merged into the Company&#x2019;s plan effective &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2021.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Defined Benefit Plans&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has &lt;span style="-sec-ix-hidden:c107876182"&gt;two&lt;/span&gt; noncontributory defined benefit plans. Effective &lt;em style="font: inherit;"&gt;2001,&lt;/em&gt; both plans were frozen and participants were fully vested in their accrued benefits as of the date each plan was frozen. &lt;em style="font: inherit;"&gt;No&lt;/em&gt; additional participants can be added to the plans and &lt;em style="font: inherit;"&gt;no&lt;/em&gt; additional service can be earned by participants subsequent to the date the plans were frozen. The funding policy for both of these plans is based on current plan costs plus amortization of the unfunded plan liability.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, the Company had recorded, in accordance with the actuarial valuations, an accrued pension asset of $0.5&#160;million and $0.1&#160;million, respectively, in Other long-term assets, and an unrecognized actuarial loss, net of tax, of $1.2&#160;million and $1.5&#160;million, respectively, in Accumulated other comprehensive loss. Additionally, as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, the projected and accumulated benefit obligation was $4.6&#160;million and $4.8&#160;million, respectively, and the fair value of plan assets was $5.1&#160;million and $4.9&#160;million, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The net periodic benefit cost was approximately $0, $0.1&#160;million, and $0.1&#160;million for each of the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;, respectively. The weighted-average discount rates used to measure the projected benefit obligation were 4.69% and 4.89% as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The plan assets are invested in pooled separate accounts stated at fair value based on the daily net asset value of the account and are therefore &lt;em style="font: inherit;"&gt;not&lt;/em&gt; categorized in the fair value hierarchy. The expected weighted-average long-term rate of return on plan assets was 7.00% as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Non-qualified Retirement Savings Plan&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has a deferred compensation plan that covered officers and selected highly compensated employees until it was frozen in &lt;em style="font: inherit;"&gt;2016.&lt;/em&gt; As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, deferred compensation plan balances of $3.9&#160;million and $3.6&#160;million, respectively, were recorded in Other assets and Other long-term liabilities.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Total expense for all retirement plans for the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; was $2.5&#160;million, $2.2&#160;million, and $1.8&#160;million, respectively, and is primarily related to the defined contribution plan.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock>
    <nwpx:CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-DefinedContributionPlanMember"
      decimals="1"
      id="c107876172"
      unitRef="Pure">0.50</nwpx:CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions>
    <nwpx:EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-DefinedContributionPlanMember"
      decimals="2"
      id="c107876174"
      unitRef="Pure">0.08</nwpx:EmployeeContributionPercentageForWhichCompanyWillMatchAtFiftyPercent>
    <nwpx:CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions
      contextRef="d_2021-10-06_2021-12-31_RetirementPlanTypeAxis-ParkusaDefinedContributionPlanMember"
      decimals="0"
      id="c107876175"
      unitRef="Pure">1</nwpx:CompanyMatchingPercentageOnFirstEightPercentOfEmployeeContributions>
    <nwpx:EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent
      contextRef="d_2021-10-06_2021-12-31_RetirementPlanTypeAxis-ParkusaDefinedContributionPlanMember"
      decimals="2"
      id="c107876177"
      unitRef="Pure">0.04</nwpx:EmployeeContributionPercentageForWhichCompanyWillMatchAtOneHundredPercent>
    <us-gaap:DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent
      contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-5"
      id="c107876189"
      unitRef="USD">500000</us-gaap:DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent>
    <us-gaap:DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent
      contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-5"
      id="c107876190"
      unitRef="USD">100000</us-gaap:DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent>
    <nwpx:AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax
      contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-5"
      id="c107876191"
      unitRef="USD">1200000</nwpx:AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax>
    <nwpx:AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax
      contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-5"
      id="c107876192"
      unitRef="USD">1500000</nwpx:AccumulatedOtherComprehensiveIncomeLossUnrecognizedNetActuarialLossesNetOfTax>
    <us-gaap:DefinedBenefitPlanAccumulatedBenefitObligation
      contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-5"
      id="c107876196"
      unitRef="USD">4600000</us-gaap:DefinedBenefitPlanAccumulatedBenefitObligation>
    <us-gaap:DefinedBenefitPlanAccumulatedBenefitObligation
      contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-5"
      id="c107876197"
      unitRef="USD">4800000</us-gaap:DefinedBenefitPlanAccumulatedBenefitObligation>
    <us-gaap:DefinedBenefitPlanFairValueOfPlanAssets
      contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-5"
      id="c107876198"
      unitRef="USD">5100000</us-gaap:DefinedBenefitPlanFairValueOfPlanAssets>
    <us-gaap:DefinedBenefitPlanFairValueOfPlanAssets
      contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-5"
      id="c107876199"
      unitRef="USD">4900000</us-gaap:DefinedBenefitPlanFairValueOfPlanAssets>
    <us-gaap:DefinedBenefitPlanNetPeriodicBenefitCost
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107876200"
      unitRef="USD">0</us-gaap:DefinedBenefitPlanNetPeriodicBenefitCost>
    <us-gaap:DefinedBenefitPlanNetPeriodicBenefitCost
      contextRef="d_2022-01-01_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-5"
      id="c107876201"
      unitRef="USD">100000</us-gaap:DefinedBenefitPlanNetPeriodicBenefitCost>
    <us-gaap:DefinedBenefitPlanNetPeriodicBenefitCost
      contextRef="d_2021-01-01_2021-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-5"
      id="c107876202"
      unitRef="USD">100000</us-gaap:DefinedBenefitPlanNetPeriodicBenefitCost>
    <us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate
      contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="4"
      id="c107876207"
      unitRef="Pure">0.0469</us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate>
    <us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate
      contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="4"
      id="c107876208"
      unitRef="Pure">0.0489</us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate>
    <us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets
      contextRef="d_2023-01-01_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="2"
      id="c107876213"
      unitRef="Pure">0.07</us-gaap:DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets>
    <us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent
      contextRef="i_2023-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember_RetirementPlanTypeAxis-NonqualifiedRetirementSavingsPlanMember"
      decimals="-5"
      id="c107876221"
      unitRef="USD">3900000</us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent>
    <us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent
      contextRef="i_2022-12-31_BalanceSheetLocationAxis-OtherLongtermLiabilitiesMember_RetirementPlanTypeAxis-NonqualifiedRetirementSavingsPlanMember"
      decimals="-5"
      id="c107876222"
      unitRef="USD">3600000</us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent>
    <nwpx:RetirementPlanExpense
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-5"
      id="c107876227"
      unitRef="USD">2500000</nwpx:RetirementPlanExpense>
    <nwpx:RetirementPlanExpense
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-5"
      id="c107876228"
      unitRef="USD">2200000</nwpx:RetirementPlanExpense>
    <nwpx:RetirementPlanExpense
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-5"
      id="c107876229"
      unitRef="USD">1800000</nwpx:RetirementPlanExpense>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569421">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;14.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;SHARE-BASED COMPENSATION:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has one active stock incentive plan for employees and directors, the &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; Stock Incentive Plan, which provides for awards of stock options to purchase shares of common stock, stock appreciation rights, restricted and unrestricted shares of common stock, RSUs, and PSAs. In addition, the Company has &lt;span style="-sec-ix-hidden:c107876233"&gt;one&lt;/span&gt; inactive stock incentive plan, the &lt;em style="font: inherit;"&gt;2007&lt;/em&gt; Stock Incentive Plan, under which previously granted awards remain outstanding.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table summarizes share-based compensation expense recorded (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Cost of sales&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,027&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,320&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,003&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Selling, general, and administrative expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,645&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,382&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,213&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,672&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,702&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,216&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;There were 722,573&#160;shares of common stock available for future issuance under the Company&#x2019;s stock incentive plan as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, assuming the outstanding PSAs vest at the target level of 100%.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Restricted Stock Units and Performance Share Awards&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company&#x2019;s stock incentive plan provides for equity instruments, such as RSUs and PSAs, which grant the right to receive a specified number of shares at specified times. RSUs and PSAs are service-based awards that vest according to the terms of the grant. PSAs have performance-based payout conditions.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;The following table summarizes the Company&#x2019;s RSU and PSA activity:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Number of RSUs and PSAs (1)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted- Average Grant Date Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unvested RSUs and PSAs as of December 31, 2022&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;200,924&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;30.80&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;RSUs and PSAs granted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;134,498&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;28.41&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Unvested RSUs and PSAs canceled&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(13,589&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;30.82&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;RSUs and PSAs vested (2)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(95,442&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;30.12&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unvested RSUs and PSAs as of December 31, 2023&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;226,391&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;29.66&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 18pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;(&lt;em style="font: inherit;"&gt;1&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The number of PSAs disclosed in this table are at the target level of 100%.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 18pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;(&lt;em style="font: inherit;"&gt;2&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;For the PSAs vested on &lt;em style="font: inherit;"&gt; March&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; the actual number of common shares that were issued was determined by multiplying the PSAs at the target level of &lt;em style="font: inherit;"&gt;100%,&lt;/em&gt; as disclosed in this table, by a payout percentage based on the performance-based conditions achieved. The payout percentage was 159% for the &lt;em style="font: inherit;"&gt;2020&lt;/em&gt;-&lt;em style="font: inherit;"&gt;2022&lt;/em&gt; performance period, 126% for the &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;-&lt;em style="font: inherit;"&gt;2022&lt;/em&gt; performance period, and 132% for the &lt;em style="font: inherit;"&gt;2022&lt;/em&gt; performance period.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The unvested balance of RSUs and PSAs as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; includes approximately 170,000&#160;PSAs at the target level of &lt;span style="-sec-ix-hidden:c107876257"&gt;100%.&lt;/span&gt; The vesting of these awards is subject to the achievement of specified performance-based conditions, and the actual number of common shares that will ultimately be issued will be determined by multiplying this number of PSAs by a payout percentage ranging from 0% to 200%.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The weighted-average grant date fair value of RSUs and PSAs granted during the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; was $28.41, $30.68, and $33.30, respectively. The total fair value of RSUs and PSAs vested during the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; was $4.4&#160;million, $2.4&#160;million, and $3.3&#160;million, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Based on the estimated level of achievement of the performance targets associated with the PSAs as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, unrecognized compensation expense related to the unvested portion of the Company&#x2019;s RSUs and PSAs was $3.0&#160;million, which is expected to be recognized over a weighted-average period of 1.5&#160;years.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Stock Awards&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;For the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;, stock awards of 15,904&#160;shares, 11,380&#160;shares, and 12,606&#160;shares, respectively, were granted to non-employee directors, which vested immediately upon issuance. The Company recorded compensation expense based on the weighted-average fair market value per share of the awards on the grant date of $29.51 in &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, $30.75 in &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and $30.94 in &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

  </us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
    <nwpx:NumberOfActiveStockIncentivePlans
      contextRef="d_2023-01-01_2023-12-31"
      decimals="INF"
      id="c107876231"
      unitRef="Pure">1</nwpx:NumberOfActiveStockIncentivePlans>
    <us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569422">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Cost of sales&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,027&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,320&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,003&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Selling, general, and administrative expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,645&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,382&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,213&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,672&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,702&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,216&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-01-01_2023-12-31_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-3"
      id="c107875336"
      unitRef="USD">1027000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-01-01_2022-12-31_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-4"
      id="c107875337"
      unitRef="USD">1320000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2021-01-01_2021-12-31_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-3"
      id="c107875338"
      unitRef="USD">1003000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-01-01_2023-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember"
      decimals="-3"
      id="c107875339"
      unitRef="USD">2645000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-01-01_2022-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember"
      decimals="-3"
      id="c107875340"
      unitRef="USD">2382000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2021-01-01_2021-12-31_IncomeStatementLocationAxis-SellingGeneralAndAdministrativeExpensesMember"
      decimals="-3"
      id="c107875341"
      unitRef="USD">2213000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875342"
      unitRef="USD">3672000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875343"
      unitRef="USD">3702000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875344"
      unitRef="USD">3216000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="i_2023-12-31"
      decimals="INF"
      id="c107876236"
      unitRef="Share">722573</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <nwpx:CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed
      contextRef="i_2023-12-31"
      decimals="0"
      id="c107876239"
      unitRef="Pure">1</nwpx:CommonStockCapitalSharesReservedForFutureIssuancePercentageVestingOfOutstandingPSAsAssumed>
    <nwpx:ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569423">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Number of RSUs and PSAs (1)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted- Average Grant Date Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unvested RSUs and PSAs as of December 31, 2022&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;200,924&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;30.80&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;RSUs and PSAs granted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;134,498&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;28.41&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Unvested RSUs and PSAs canceled&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(13,589&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;30.82&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;RSUs and PSAs vested (2)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(95,442&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;30.12&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unvested RSUs and PSAs as of December 31, 2023&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;226,391&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;29.66&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </nwpx:ScheduleOfUnvestedRestrictedStockUnitsAndPerformanceShareAwardsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107875347"
      unitRef="Share">200924</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107875348"
      unitRef="USDPerShare">30.8</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107875349"
      unitRef="Share">134498</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107875350"
      unitRef="USDPerShare">28.41</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107875351"
      unitRef="Share">13589</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107875352"
      unitRef="USDPerShare">30.82</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107875353"
      unitRef="Share">95442</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107875354"
      unitRef="USDPerShare">30.12</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107875355"
      unitRef="Share">226391</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107875356"
      unitRef="USDPerShare">29.66</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <nwpx:PerformanceShareAwardTargetLevelPercentage
      contextRef="i_2023-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="0"
      id="c107876241"
      unitRef="Pure">1</nwpx:PerformanceShareAwardTargetLevelPercentage>
    <nwpx:PerformanceAwardsIssuedMultiplier
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="2"
      id="c107876246"
      unitRef="Pure">1.59</nwpx:PerformanceAwardsIssuedMultiplier>
    <nwpx:PerformanceAwardsIssuedMultiplier
      contextRef="d_2021-01-01_2021-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="2"
      id="c107876249"
      unitRef="Pure">1.26</nwpx:PerformanceAwardsIssuedMultiplier>
    <nwpx:PerformanceAwardsIssuedMultiplier
      contextRef="d_2022-01-01_2022-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="2"
      id="c107876252"
      unitRef="Pure">1.32</nwpx:PerformanceAwardsIssuedMultiplier>
    <nwpx:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance
      contextRef="i_2023-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c107876256"
      unitRef="Share">170000</nwpx:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumberAtTargetLevelOfPerformance>
    <nwpx:PerformanceAwardsIssuedMultiplier
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember"
      decimals="-3"
      id="c107876258"
      unitRef="Pure">0</nwpx:PerformanceAwardsIssuedMultiplier>
    <nwpx:PerformanceAwardsIssuedMultiplier
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember"
      decimals="0"
      id="c107876259"
      unitRef="Pure">2</nwpx:PerformanceAwardsIssuedMultiplier>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107876264"
      unitRef="USDPerShare">28.41</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2022-01-01_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107876265"
      unitRef="USDPerShare">30.68</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2021-01-01_2021-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="INF"
      id="c107876266"
      unitRef="USDPerShare">33.3</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="-5"
      id="c107876271"
      unitRef="USD">4400000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue
      contextRef="d_2022-01-01_2022-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="-5"
      id="c107876272"
      unitRef="USD">2400000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue
      contextRef="d_2021-01-01_2021-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="-5"
      id="c107876273"
      unitRef="USD">3300000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions
      contextRef="i_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      decimals="-6"
      id="c107876276"
      unitRef="USD">3000000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedShareBasedAwardsOtherThanOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-RestrictedStockUnitsAndPerformanceStockAwardsMember"
      id="c107876277">P1Y6M</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember"
      decimals="INF"
      id="c107876282"
      unitRef="Share">15904</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2022-01-01_2022-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember"
      decimals="INF"
      id="c107876283"
      unitRef="Share">11380</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2021-01-01_2021-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember"
      decimals="INF"
      id="c107876284"
      unitRef="Share">12606</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2023-01-01_2023-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember"
      decimals="INF"
      id="c107876285"
      unitRef="USDPerShare">29.51</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2022-01-01_2022-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember"
      decimals="INF"
      id="c107876287"
      unitRef="USDPerShare">30.75</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2021-01-01_2021-12-31_AwardTypeAxis-StockAwardsMember_TitleOfIndividualAxis-DirectorMember"
      decimals="INF"
      id="c107876289"
      unitRef="USDPerShare">30.94</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569424">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;15.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;COMMITMENTS AND CONTINGENCIES:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Portland Harbor Superfund Site&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt;2000,&lt;/em&gt; a section of the lower Willamette River known as the Portland Harbor Superfund Site was included on the National Priorities List at the request of the United States Environmental Protection Agency (&#x201c;EPA&#x201d;). While the Company&#x2019;s Portland, Oregon manufacturing facility does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; border the Willamette River, an outfall from the facility&#x2019;s stormwater system drains into a neighboring property&#x2019;s privately owned stormwater system and slip. Also in &lt;em style="font: inherit;"&gt;2000,&lt;/em&gt; the Company was notified by the EPA and the Oregon Department of Environmental Quality (&#x201c;ODEQ&#x201d;) of potential liability under the Comprehensive Environmental Response, Compensation, and Liability Act (&#x201c;CERCLA&#x201d;). A remedial investigation and feasibility study of the Portland Harbor Superfund Site was directed by a group of 14 potentially responsible parties known as the Lower Willamette Group under agreement with the EPA. The EPA finalized the remedial investigation report in&#160;&lt;em style="font: inherit;"&gt;2016,&lt;/em&gt; and the feasibility study in &lt;em style="font: inherit;"&gt;2016,&lt;/em&gt; which identified multiple remedial alternatives. In &lt;em style="font: inherit;"&gt;2017,&lt;/em&gt; the EPA issued its Record of Decision selecting the remedy for cleanup at the Portland Harbor Superfund Site, which it believes will cost approximately $1&#160;billion at net present value and 13&#160;years to complete. The EPA has &lt;em style="font: inherit;"&gt;not&lt;/em&gt; yet determined who is responsible for the costs of cleanup or how the cleanup costs will be allocated among the more than 150 potentially responsible parties (&#x201c;PRPs&#x201d;). Because of the large number of potentially responsible parties and the variability in the range of remediation alternatives, the Company is unable to estimate an amount or an amount within a range of costs for its obligation with respect to the Portland Harbor Superfund Site matters, and &lt;em style="font: inherit;"&gt;no&lt;/em&gt; further adjustment to the Consolidated Financial Statements has been recorded as of the date of this filing.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The ODEQ is separately providing oversight of voluntary investigations and source control activities by the Company involving the Company&#x2019;s site, which are focused on controlling any current &#x201c;uplands&#x201d; releases of contaminants into the Willamette River. &lt;em style="font: inherit;"&gt;No&lt;/em&gt; liabilities have been established in connection with these investigations because the extent of contamination and the Company&#x2019;s responsibility for the contamination have &lt;em style="font: inherit;"&gt;not&lt;/em&gt; yet been determined.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Concurrent with the activities of the EPA and the ODEQ, the Portland Harbor Natural Resources Trustee Council (&#x201c;Trustees&#x201d;) sent some or all of the same parties, including the Company, a notice of intent to perform a Natural Resource Damage Assessment (&#x201c;NRDA&#x201d;) for the Portland Harbor Superfund Site to determine the nature and extent of natural resource damages under CERCLA Section&#160;&lt;em style="font: inherit;"&gt;107.&lt;/em&gt; The Trustees for the Portland Harbor Superfund Site consist of representatives from several Northwest Indian Tribes, &lt;em style="font: inherit;"&gt;three&lt;/em&gt; federal agencies, and &lt;em style="font: inherit;"&gt;one&lt;/em&gt; state agency. The Trustees act independently of the EPA and the ODEQ. The Trustees have encouraged potentially responsible parties to voluntarily participate in the funding of their injury assessments and several of those parties have agreed to do so. In &lt;em style="font: inherit;"&gt;2014,&lt;/em&gt; the Company agreed to participate in the injury assessment process, which included funding $0.4&#160;million of the assessment. The Company has &lt;em style="font: inherit;"&gt;not&lt;/em&gt; assumed any additional payment obligations or liabilities with the participation with the NRDA, nor does the Company expect to incur significant future costs in the resolution of the NRDA.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;In &lt;em style="font: inherit;"&gt;2017,&lt;/em&gt; the Confederated Tribes and Bands of the Yakama Nation, a Trustee until they withdrew from the council in &lt;em style="font: inherit;"&gt;2009,&lt;/em&gt; filed a complaint against the potentially responsible parties including the Company to recover costs related to their own injury assessment and compensation for natural resources damages. The case has been stayed until &lt;em style="font: inherit;"&gt;2025,&lt;/em&gt; and the Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; have sufficient information at this time to determine the likelihood of a loss in this matter or the amount of damages that could be allocated to the Company.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has insurance policies for defense costs, as well as indemnification policies it believes will provide reimbursement for the remediation assessed. However, the Company can provide &lt;em style="font: inherit;"&gt;no&lt;/em&gt; assurance that those policies will cover all of the costs which the Company &lt;em style="font: inherit;"&gt; may &lt;/em&gt;incur.&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;All Sites&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company operates its facilities under numerous governmental permits and licenses relating to air emissions, stormwater runoff, and other environmental matters. The Company&#x2019;s operations are also governed by many other laws and regulations, including those relating to workplace safety and worker health, principally the Occupational Safety and Health Act and regulations thereunder which, among other requirements, establish noise and dust standards. The Company believes it is in material compliance with its permits and licenses and these laws and regulations, and the Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; believe that future compliance with such laws and regulations will have a material adverse effect on its financial position, results of operations, or cash flows.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Other Contingencies and Legal Proceedings&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;From time to time, the Company is party to a variety of legal actions, including claims, suits, complaints, and investigations arising out of the ordinary course of its business. The Company maintains insurance coverage against potential claims in amounts that are believed to be adequate. To the extent that insurance does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; cover legal, defense, and indemnification costs associated with a loss contingency, the Company records accruals when such losses are considered probable and reasonably estimable. The Company believes that it is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; presently a party to legal actions, the outcomes of which would have a material adverse effect on its business, financial condition, results of operations, or cash flows.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Commitments&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, the Company&#x2019;s commitments include approximately $1.2&#160;million remaining relating to its investment in the primary component of the new reinforced concrete pipe mill for which the Company has &lt;em style="font: inherit;"&gt;not&lt;/em&gt; yet received the equipment and approximately $5.2&#160;million remaining relating to the construction of a building for the new mill at the Company&#x2019;s facility in Salt Lake City, Utah.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Guarantees&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company has entered into certain letters of credit that total $1.1&#160;million as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;. The letters of credit relate to workers&#x2019; compensation insurance.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:CommitmentsAndContingenciesDisclosureTextBlock>
    <nwpx:NumberOfPotentiallyResponsibleParties
      contextRef="i_2017-01-31_CounterpartyNameAxis-LowerWillametteGroupMember"
      decimals="INF"
      id="c107876296"
      unitRef="Pure">14</nwpx:NumberOfPotentiallyResponsibleParties>
    <nwpx:EstimatedCostOfEPASelectedRemedy
      contextRef="d_2017-01-01_2017-01-31_EnvironmentalRemediationSiteAxis-PortlandHarborSuperfundSiteMember"
      decimals="-9"
      id="c107876300"
      unitRef="USD">1000000000</nwpx:EstimatedCostOfEPASelectedRemedy>
    <nwpx:EstimatedTimeToCompleteSelectedEPARemedy
      contextRef="d_2017-01-01_2017-01-31_EnvironmentalRemediationSiteAxis-PortlandHarborSuperfundSiteMember"
      id="c107876301">P13Y</nwpx:EstimatedTimeToCompleteSelectedEPARemedy>
    <nwpx:NumberOfPotentiallyResponsibleParties
      contextRef="i_2017-01-31_EnvironmentalRemediationSiteAxis-PortlandHarborSuperfundSiteMember"
      decimals="INF"
      id="c107876303"
      unitRef="Pure">150</nwpx:NumberOfPotentiallyResponsibleParties>
    <us-gaap:LossContingencyAccrualCarryingValueCurrent
      contextRef="i_2014-06-30_LossContingenciesByNatureOfContingencyAxis-PortlandHarborNaturalreSourcesTrusteeCouncilMember"
      decimals="-5"
      id="c107876311"
      unitRef="USD">400000</us-gaap:LossContingencyAccrualCarryingValueCurrent>
    <nwpx:OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived
      contextRef="i_2023-12-31_OtherCommitmentsAxis-CapitalAdditionsMember"
      decimals="-5"
      id="c107876324"
      unitRef="USD">1200000</nwpx:OtherCommitmentAmountPaidForEquipmentPurchasedYetNotReceived>
    <us-gaap:OtherCommitment
      contextRef="i_2023-12-31_OtherCommitmentsAxis-CapitalAdditionsMember"
      decimals="-5"
      id="c107876326"
      unitRef="USD">5200000</us-gaap:OtherCommitment>
    <us-gaap:LettersOfCreditOutstandingAmount
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107876327"
      unitRef="USD">1100000</us-gaap:LettersOfCreditOutstandingAmount>
    <us-gaap:RevenueFromContractWithCustomerTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569425">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;16.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;REVENUE:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Net sales by geographic region, based on the location of the customer, were as follows (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Net sales by geographic region:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;420,925&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;423,961&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;313,729&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Canada&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;23,430&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;33,704&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;19,584&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;444,355&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;457,665&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;333,313&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;One SPP customer accounted for 10%, 12%, and 12% of total net sales for the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;, respectively. No Precast customer accounted for more than &lt;em style="font: inherit;"&gt;10%&lt;/em&gt; of total net sales for the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Net revisions in contract estimates resulted in an increase (decrease) in SPP net sales of ($1.1)&#160;million, ($0.6)&#160;million, and $2.0&#160;million for the years ended &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, and &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Disaggregation of Revenue&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table disaggregates revenue by recognition over time or at a point in time, as the Company believes it best depicts how the nature, amount, timing, and uncertainty of its revenue and cash flows are affected by economic factors (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Over time&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;296,381&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;307,572&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;259,823&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Point in time&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;147,974&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;150,093&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;73,490&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Net sales&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;444,355&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;457,665&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;333,313&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Contract Assets and Contract Liabilities&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The difference between the opening and closing balances of the Company&#x2019;s contract assets and contract liabilities primarily results from the timing difference between the Company&#x2019;s performance and billings.&lt;/p&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following is a summary of the changes in contract assets (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Balance, beginning of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;121,778&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;107,170&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Revenue recognized in advance of billings&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;291,812&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;306,095&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Billings&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(293,356&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(294,506&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;282&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,019&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Balance, end of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;120,516&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;121,778&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following is a summary of the changes in contract liabilities (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Balance, beginning of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;17,456&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,623&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Billings&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;20,815&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;17,618&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Revenue recognized&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(16,984&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(2,663&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;163&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(122&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Balance, end of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;21,450&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,456&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;Backlog&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Backlog represents the balance of remaining performance obligations under signed contracts for SPP water infrastructure steel pipe products for which revenue is recognized over time. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, backlog was $273&#160;million. The Company expects to recognize approximately 76% of the remaining performance obligations in &lt;span style="-sec-ix-hidden:c107876356"&gt;2024&lt;/span&gt;, 23% in &lt;span style="-sec-ix-hidden:c107876358"&gt;2025&lt;/span&gt;, and the balance thereafter.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:RevenueFromContractWithCustomerTextBlock>
    <us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569426">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Net sales by geographic region:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;420,925&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;423,961&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;313,729&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Canada&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;23,430&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;33,704&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;19,584&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;444,355&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;457,665&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;333,313&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c107875363"
      unitRef="USD">420925000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c107875364"
      unitRef="USD">423961000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c107875365"
      unitRef="USD">313729000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31_StatementGeographicalAxis-CA"
      decimals="-4"
      id="c107875366"
      unitRef="USD">23430000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31_StatementGeographicalAxis-CA"
      decimals="-3"
      id="c107875367"
      unitRef="USD">33704000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31_StatementGeographicalAxis-CA"
      decimals="-3"
      id="c107875368"
      unitRef="USD">19584000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875369"
      unitRef="USD">444355000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875370"
      unitRef="USD">457665000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875371"
      unitRef="USD">333313000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="d_2023-01-01_2023-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember"
      decimals="1"
      id="c107876331"
      unitRef="Pure">0.10</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="d_2022-01-01_2022-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember"
      decimals="2"
      id="c107876332"
      unitRef="Pure">0.12</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="d_2021-01-01_2021-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_MajorCustomersAxis-OneSppCustomerMember"
      decimals="2"
      id="c107876333"
      unitRef="Pure">0.12</us-gaap:ConcentrationRiskPercentage1>
    <nwpx:NumberOfMajorCustomers
      contextRef="d_2023-01-01_2023-12-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107876338"
      unitRef="Pure">0</nwpx:NumberOfMajorCustomers>
    <nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-5"
      id="c107876344"
      unitRef="USD">-1100000</nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax>
    <nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-5"
      id="c107876345"
      unitRef="USD">-600000</nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax>
    <nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-6"
      id="c107876346"
      unitRef="USD">2000000</nwpx:IncreaseDecreaseInRevenueFromContractWithCustomersIncludingAssessedTax>
    <us-gaap:DisaggregationOfRevenueTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569427">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Over time&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;296,381&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;307,572&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;259,823&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Point in time&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;147,974&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;150,093&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;73,490&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Net sales&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;444,355&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;457,665&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;333,313&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:DisaggregationOfRevenueTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember"
      decimals="-3"
      id="c107875379"
      unitRef="USD">296381000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember"
      decimals="-3"
      id="c107875380"
      unitRef="USD">307572000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredOverTimeMember"
      decimals="-3"
      id="c107875381"
      unitRef="USD">259823000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="-3"
      id="c107875382"
      unitRef="USD">147974000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="-3"
      id="c107875383"
      unitRef="USD">150093000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="-4"
      id="c107875384"
      unitRef="USD">73490000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875385"
      unitRef="USD">444355000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875386"
      unitRef="USD">457665000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875387"
      unitRef="USD">333313000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock
      contextRef="d_2023-01-01_2023-12-31"
      id="c37DA8820-6D4C-44B5-BC66-9464CD15D9D2">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Balance, beginning of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;121,778&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;107,170&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Revenue recognized in advance of billings&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;291,812&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;306,095&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Billings&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(293,356&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(294,506&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;282&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,019&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Balance, end of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;120,516&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;121,778&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Balance, beginning of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;17,456&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,623&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Billings&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;20,815&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;17,618&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Revenue recognized&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(16,984&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(2,663&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;163&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(122&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Balance, end of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;21,450&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,456&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock>
    <us-gaap:ContractWithCustomerAssetNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875392"
      unitRef="USD">121778000</us-gaap:ContractWithCustomerAssetNet>
    <us-gaap:ContractWithCustomerAssetNet
      contextRef="i_2021-12-31"
      decimals="-4"
      id="c107875393"
      unitRef="USD">107170000</us-gaap:ContractWithCustomerAssetNet>
    <nwpx:ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875394"
      unitRef="USD">291812000</nwpx:ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings>
    <nwpx:ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875395"
      unitRef="USD">306095000</nwpx:ContractWithCustomerAssetRevenueRecognizedInAdvanceOfBillings>
    <nwpx:ContractWithCustomerAssetBillings
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875396"
      unitRef="USD">-293356000</nwpx:ContractWithCustomerAssetBillings>
    <nwpx:ContractWithCustomerAssetBillings
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875397"
      unitRef="USD">-294506000</nwpx:ContractWithCustomerAssetBillings>
    <nwpx:ContractWithCustomerAssetOther
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875398"
      unitRef="USD">282000</nwpx:ContractWithCustomerAssetOther>
    <nwpx:ContractWithCustomerAssetOther
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875399"
      unitRef="USD">3019000</nwpx:ContractWithCustomerAssetOther>
    <us-gaap:ContractWithCustomerAssetNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875400"
      unitRef="USD">120516000</us-gaap:ContractWithCustomerAssetNet>
    <us-gaap:ContractWithCustomerAssetNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875401"
      unitRef="USD">121778000</us-gaap:ContractWithCustomerAssetNet>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875406"
      unitRef="USD">17456000</us-gaap:ContractWithCustomerLiability>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i_2021-12-31"
      decimals="-3"
      id="c107875407"
      unitRef="USD">2623000</us-gaap:ContractWithCustomerLiability>
    <nwpx:ContractWithCustomerLiabilityBillings
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875408"
      unitRef="USD">20815000</nwpx:ContractWithCustomerLiabilityBillings>
    <nwpx:ContractWithCustomerLiabilityBillings
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875409"
      unitRef="USD">17618000</nwpx:ContractWithCustomerLiabilityBillings>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875410"
      unitRef="USD">-16984000</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <us-gaap:ContractWithCustomerLiabilityRevenueRecognized
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875411"
      unitRef="USD">-2663000</us-gaap:ContractWithCustomerLiabilityRevenueRecognized>
    <nwpx:ContractWithCustomerLiabilityOther
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875412"
      unitRef="USD">163000</nwpx:ContractWithCustomerLiabilityOther>
    <nwpx:ContractWithCustomerLiabilityOther
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875413"
      unitRef="USD">-122000</nwpx:ContractWithCustomerLiabilityOther>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107875414"
      unitRef="USD">21450000</us-gaap:ContractWithCustomerLiability>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875415"
      unitRef="USD">17456000</us-gaap:ContractWithCustomerLiability>
    <us-gaap:RevenueRemainingPerformanceObligation
      contextRef="i_2023-12-31"
      decimals="-6"
      id="c107876354"
      unitRef="USD">273000000</us-gaap:RevenueRemainingPerformanceObligation>
    <us-gaap:RevenueRemainingPerformanceObligationPercentage
      contextRef="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2024-01-01"
      decimals="2"
      id="c107876355"
      unitRef="Pure">0.76</us-gaap:RevenueRemainingPerformanceObligationPercentage>
    <us-gaap:RevenueRemainingPerformanceObligationPercentage
      contextRef="i_2023-12-31_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis-RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis.domain-2025-01-01"
      decimals="2"
      id="c107876357"
      unitRef="Pure">0.23</us-gaap:RevenueRemainingPerformanceObligationPercentage>
    <us-gaap:IncomeTaxDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569430">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;17.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;INCOME TAXES:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The United States and foreign components of Income before income taxes are as follows (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;27,814&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;40,271&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;14,000&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,465&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,079&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,158&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;29,279&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;41,350&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,158&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The components of Income tax expense are as follows (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Current:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Federal&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;6,817&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;8,443&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,256&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;State&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;1,519&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,264&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,064&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;289&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;198&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;213&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total current income tax expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;8,625&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;9,905&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,533&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Deferred:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Federal&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;(612&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(22&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;573&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;State&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;195&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;340&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(464&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(1&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(22&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(7&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total deferred income tax expense (benefit)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(418&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;296&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;102&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total income tax expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;8,207&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,201&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,635&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The difference between the Company&#x2019;s effective income tax rate and the federal statutory income tax rate is explained as follows (dollar amounts in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Income tax expense at federal statutory rate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;6,148&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;8,683&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,183&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;State expense, net of federal income tax effect&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;942&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,463&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;547&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Change in valuation allowance&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;(30&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(1&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(247&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Nondeductible expenses&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;257&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(35&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(31&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Foreign rate differential&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;133&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;97&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;104&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Accrued interest on uncertain income tax positions&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; background-color: rgba(0, 0, 0, 0); padding: 0; margin: 0"&gt;264&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;106&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;16&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;State franchise tax&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; background-color: rgba(0, 0, 0, 0); padding: 0; margin: 0"&gt;250&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;110&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;92&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;243&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(222&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(29&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Income tax expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;8,207&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,201&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,635&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Effective income tax rate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;28.0&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;24.7&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;24.0&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The income tax effect of temporary differences that give rise to significant portions of deferred income tax assets and liabilities is presented below (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Deferred income tax assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Accrued employee benefits&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;3,096&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,840&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Inventories&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;380&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;350&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Trade receivable, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;532&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;329&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Net operating loss carryforwards&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;3,429&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,944&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Tax credit carryforwards&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;2,777&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,863&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Contract assets, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;934&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;403&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;1,952&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,074&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;13,100&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;11,803&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Valuation allowance&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(6,641&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(6,051&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;6,459&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,752&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Deferred income tax liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Property and equipment&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;(13,850&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(13,550&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Intangible assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;(800&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(1,319&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;(1,164&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(606&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Prepaid expenses&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(1,217&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,285&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(17,031&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(16,760&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Net deferred income tax liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(10,572&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(11,008&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Amounts are presented in the Consolidated Balance Sheets as follows:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Deferred income tax assets, included in Other assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;370&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;394&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Deferred income taxes&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(10,942&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(11,402&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Net deferred income tax liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(10,572&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(11,008&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;"&gt;In assessing the ability to realize deferred income tax assets, management considers whether it is more likely than &lt;em style="font: inherit;"&gt;not&lt;/em&gt; that some portion or all of the deferred income tax assets will &lt;em style="font: inherit;"&gt;not&lt;/em&gt; be realized. The ultimate realization of deferred income tax assets is dependent upon the generation of future taxable income during the periods in which those temporary differences become deductible. Management considers the scheduled reversal of deferred income tax liabilities, projected future taxable income, taxable income in carryback periods, and tax planning strategies in making this assessment. The Company believes it is more likely than &lt;em style="font: inherit;"&gt;not&lt;/em&gt; it will realize the benefits of its deductible differences as of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, net of any valuation allowance. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, the Company continues to maintain a valuation allowance on federal tax credits and select state jurisdictions.&lt;/p&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, the Company had approximately $0.3&#160;million of federal income tax credit carryforwards, which expire on various dates between 2024 and 2026. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, the Company also had approximately $18.4&#160;million of state net operating loss carryforwards, which expire on various dates between 2024 and 2036, and state income tax credit carryforwards of $4.4&#160;million, which began to expire in 2023. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, the Company also had approximately $8.4&#160;million of foreign net operating loss carryforwards, which expire on various dates between 2024 and 2033.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company files income tax returns in the United States Federal jurisdiction, in a limited number of foreign jurisdictions, and in many state jurisdictions. With few exceptions, the Company is &lt;em style="font: inherit;"&gt;no&lt;/em&gt; longer subject to United States Federal, state, or foreign income tax examinations for years before &lt;span style="-sec-ix-hidden:c107876387"&gt;2019.&lt;/span&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;A summary of the changes in the unrecognized income tax benefits is presented below (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Unrecognized income tax benefits, beginning of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;4,472&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,366&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,350&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Increases for positions taken in prior years&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;264&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;106&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;16&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Unrecognized income tax benefits, end of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;4,736&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,472&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,366&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; believe it is reasonably possible that the total amounts of unrecognized income tax benefits will change in the following &lt;em style="font: inherit;"&gt;twelve&lt;/em&gt; months; however, actual results could differ from those currently expected. Effectively all of the unrecognized income tax benefits would affect the Company&#x2019;s effective income tax rate if recognized at some point in the future.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company recognizes interest and penalties related to uncertain income tax positions in Income tax expense. As of &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;31,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, the Company had $0.4&#160;million and $0.1&#160;million, respectively, of accrued interest related to uncertain income tax positions. Total interest for uncertain income tax positions did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; change materially in &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, &lt;em style="font: inherit;"&gt;2022&lt;/em&gt;, or &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;.&lt;/p&gt;
  </us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569431">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;United States&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;27,814&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;40,271&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;14,000&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,465&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,079&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,158&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;29,279&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;41,350&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,158&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875422"
      unitRef="USD">27814000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875423"
      unitRef="USD">40271000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-6"
      id="c107875424"
      unitRef="USD">14000000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875425"
      unitRef="USD">1465000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875426"
      unitRef="USD">1079000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875427"
      unitRef="USD">1158000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875428"
      unitRef="USD">29279000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-4"
      id="c107875429"
      unitRef="USD">41350000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875430"
      unitRef="USD">15158000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569432">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Current:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Federal&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;6,817&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;8,443&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,256&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;State&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;1,519&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,264&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,064&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;289&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;198&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;213&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total current income tax expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;8,625&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;9,905&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,533&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Deferred:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Federal&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;(612&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(22&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;573&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;State&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;195&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;340&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(464&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Foreign&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(1&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(22&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(7&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total deferred income tax expense (benefit)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(418&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;296&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;102&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt; text-indent: -9pt;"&gt;Total income tax expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;8,207&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,201&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,635&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875437"
      unitRef="USD">6817000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875438"
      unitRef="USD">8443000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875439"
      unitRef="USD">2256000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875440"
      unitRef="USD">1519000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875441"
      unitRef="USD">1264000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875442"
      unitRef="USD">1064000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875443"
      unitRef="USD">289000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875444"
      unitRef="USD">198000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875445"
      unitRef="USD">213000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875446"
      unitRef="USD">8625000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875447"
      unitRef="USD">9905000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875448"
      unitRef="USD">3533000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875449"
      unitRef="USD">-612000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875450"
      unitRef="USD">-22000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875451"
      unitRef="USD">573000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875452"
      unitRef="USD">195000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-4"
      id="c107875453"
      unitRef="USD">340000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875454"
      unitRef="USD">-464000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875455"
      unitRef="USD">-1000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875456"
      unitRef="USD">-22000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875457"
      unitRef="USD">-7000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <nwpx:DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875458"
      unitRef="USD">-418000</nwpx:DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit>
    <nwpx:DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875459"
      unitRef="USD">296000</nwpx:DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit>
    <nwpx:DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875460"
      unitRef="USD">102000</nwpx:DeferredFederalStateAndLocalAndForeignIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875461"
      unitRef="USD">8207000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875462"
      unitRef="USD">10201000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875463"
      unitRef="USD">3635000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569433">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Income tax expense at federal statutory rate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;6,148&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;8,683&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,183&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;State expense, net of federal income tax effect&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;942&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;1,463&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;547&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Change in valuation allowance&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;(30&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(1&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(247&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Nondeductible expenses&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;257&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(35&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(31&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Foreign rate differential&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;133&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;97&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;104&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Accrued interest on uncertain income tax positions&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; background-color: rgba(0, 0, 0, 0); padding: 0; margin: 0"&gt;264&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;106&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;16&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;State franchise tax&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; background-color: rgba(0, 0, 0, 0); padding: 0; margin: 0"&gt;250&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;110&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;92&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;243&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(222&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(29&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Income tax expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;8,207&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,201&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;3,635&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Effective income tax rate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;28.0&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;24.7&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;24.0&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;%&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock>
    <us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875472"
      unitRef="USD">6148000</us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate>
    <us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875473"
      unitRef="USD">8683000</us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate>
    <us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875474"
      unitRef="USD">3183000</us-gaap:IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate>
    <us-gaap:IncomeTaxReconciliationStateAndLocalIncomeTaxes
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875475"
      unitRef="USD">942000</us-gaap:IncomeTaxReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:IncomeTaxReconciliationStateAndLocalIncomeTaxes
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875476"
      unitRef="USD">1463000</us-gaap:IncomeTaxReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:IncomeTaxReconciliationStateAndLocalIncomeTaxes
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875477"
      unitRef="USD">547000</us-gaap:IncomeTaxReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-4"
      id="c107875478"
      unitRef="USD">-30000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875479"
      unitRef="USD">-1000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875480"
      unitRef="USD">-247000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:IncomeTaxReconciliationNondeductibleExpense
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875481"
      unitRef="USD">257000</us-gaap:IncomeTaxReconciliationNondeductibleExpense>
    <us-gaap:IncomeTaxReconciliationNondeductibleExpense
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875482"
      unitRef="USD">-35000</us-gaap:IncomeTaxReconciliationNondeductibleExpense>
    <us-gaap:IncomeTaxReconciliationNondeductibleExpense
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875483"
      unitRef="USD">-31000</us-gaap:IncomeTaxReconciliationNondeductibleExpense>
    <us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875484"
      unitRef="USD">133000</us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875485"
      unitRef="USD">97000</us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875486"
      unitRef="USD">104000</us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential>
    <nwpx:EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875487"
      unitRef="USD">264000</nwpx:EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount>
    <nwpx:EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875488"
      unitRef="USD">106000</nwpx:EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount>
    <nwpx:EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875489"
      unitRef="USD">16000</nwpx:EffectiveIncomeTaxRateReconciliationAccruedInterestOnUncertainIncomeTaxPositionsAmount>
    <nwpx:EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-4"
      id="c107875490"
      unitRef="USD">250000</nwpx:EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount>
    <nwpx:EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-4"
      id="c107875491"
      unitRef="USD">110000</nwpx:EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount>
    <nwpx:EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875492"
      unitRef="USD">92000</nwpx:EffectiveIncomeTaxReconciliationStateFranchiseTaxAmount>
    <us-gaap:IncomeTaxReconciliationOtherAdjustments
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875493"
      unitRef="USD">243000</us-gaap:IncomeTaxReconciliationOtherAdjustments>
    <us-gaap:IncomeTaxReconciliationOtherAdjustments
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875494"
      unitRef="USD">-222000</us-gaap:IncomeTaxReconciliationOtherAdjustments>
    <us-gaap:IncomeTaxReconciliationOtherAdjustments
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875495"
      unitRef="USD">-29000</us-gaap:IncomeTaxReconciliationOtherAdjustments>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875496"
      unitRef="USD">8207000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875497"
      unitRef="USD">10201000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875498"
      unitRef="USD">3635000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2023-01-01_2023-12-31"
      decimals="2"
      id="c107875499"
      unitRef="Pure">0.28</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2022-01-01_2022-12-31"
      decimals="3"
      id="c107875500"
      unitRef="Pure">0.247</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2021-01-01_2021-12-31"
      decimals="2"
      id="c107875501"
      unitRef="Pure">0.24</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569434">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Deferred income tax assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Accrued employee benefits&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;3,096&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;3,840&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Inventories&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;380&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;350&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Trade receivable, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;532&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;329&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Net operating loss carryforwards&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;3,429&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,944&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Tax credit carryforwards&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;2,777&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;2,863&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Contract assets, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;934&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;403&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;1,952&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,074&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;13,100&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;11,803&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Valuation allowance&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(6,641&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(6,051&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;6,459&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,752&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Deferred income tax liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Property and equipment&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;(13,850&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(13,550&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Intangible assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;(800&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(1,319&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;(1,164&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(606&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Prepaid expenses&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(1,217&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,285&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(17,031&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(16,760&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Net deferred income tax liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(10,572&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(11,008&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Amounts are presented in the Consolidated Balance Sheets as follows:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Deferred income tax assets, included in Other assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;370&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;394&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Deferred income taxes&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(10,942&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(11,402&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Net deferred income tax liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;(10,572&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(11,008&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875506"
      unitRef="USD">3096000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c107875507"
      unitRef="USD">3840000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsEmployeeBenefits>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107875508"
      unitRef="USD">380000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c107875509"
      unitRef="USD">350000</us-gaap:DeferredTaxAssetsInventory>
    <nwpx:DeferredTaxAssetTradeReceivableNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875510"
      unitRef="USD">532000</nwpx:DeferredTaxAssetTradeReceivableNet>
    <nwpx:DeferredTaxAssetTradeReceivableNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875511"
      unitRef="USD">329000</nwpx:DeferredTaxAssetTradeReceivableNet>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875512"
      unitRef="USD">3429000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875513"
      unitRef="USD">2944000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwards
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875514"
      unitRef="USD">2777000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwards>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwards
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875515"
      unitRef="USD">2863000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwards>
    <nwpx:DeferredTaxAssetContractAssetsNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875516"
      unitRef="USD">934000</nwpx:DeferredTaxAssetContractAssetsNet>
    <nwpx:DeferredTaxAssetContractAssetsNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875517"
      unitRef="USD">403000</nwpx:DeferredTaxAssetContractAssetsNet>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875518"
      unitRef="USD">1952000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875519"
      unitRef="USD">1074000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107875520"
      unitRef="USD">13100000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875521"
      unitRef="USD">11803000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875522"
      unitRef="USD">6641000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875523"
      unitRef="USD">6051000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875524"
      unitRef="USD">6459000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875525"
      unitRef="USD">5752000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107875526"
      unitRef="USD">13850000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c107875527"
      unitRef="USD">13550000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107875528"
      unitRef="USD">800000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875529"
      unitRef="USD">1319000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsIntangibleAssets>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875530"
      unitRef="USD">1164000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875531"
      unitRef="USD">606000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill>
    <us-gaap:DeferredTaxLiabilitiesPrepaidExpenses
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875532"
      unitRef="USD">1217000</us-gaap:DeferredTaxLiabilitiesPrepaidExpenses>
    <us-gaap:DeferredTaxLiabilitiesPrepaidExpenses
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875533"
      unitRef="USD">1285000</us-gaap:DeferredTaxLiabilitiesPrepaidExpenses>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875534"
      unitRef="USD">17031000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c107875535"
      unitRef="USD">16760000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875536"
      unitRef="USD">10572000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875537"
      unitRef="USD">11008000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i_2023-12-31_BalanceSheetLocationAxis-OtherAssetsMember"
      decimals="-4"
      id="c107875538"
      unitRef="USD">370000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i_2022-12-31_BalanceSheetLocationAxis-OtherAssetsMember"
      decimals="-3"
      id="c107875539"
      unitRef="USD">394000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875540"
      unitRef="USD">10942000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875541"
      unitRef="USD">11402000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredTaxLiabilities
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875542"
      unitRef="USD">10572000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875543"
      unitRef="USD">11008000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107876371"
      unitRef="USD">300000</us-gaap:TaxCreditCarryforwardAmount>
    <nwpx:TaxCreditCarryforwardExpirationYear
      contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-DomesticCountryMember_RangeAxis-MinimumMember"
      id="c107876372">2024</nwpx:TaxCreditCarryforwardExpirationYear>
    <nwpx:TaxCreditCarryforwardExpirationYear
      contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-DomesticCountryMember_RangeAxis-MaximumMember"
      id="c107876373">2026</nwpx:TaxCreditCarryforwardExpirationYear>
    <us-gaap:OperatingLossCarryforwards
      contextRef="i_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember"
      decimals="-5"
      id="c107876376"
      unitRef="USD">18400000</us-gaap:OperatingLossCarryforwards>
    <nwpx:OperatingLossCarryforwardsExpirationYear
      contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember_RangeAxis-MinimumMember"
      id="c107876377">2024</nwpx:OperatingLossCarryforwardsExpirationYear>
    <nwpx:OperatingLossCarryforwardsExpirationYear
      contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember_RangeAxis-MaximumMember"
      id="c107876378">2036</nwpx:OperatingLossCarryforwardsExpirationYear>
    <us-gaap:TaxCreditCarryforwardAmount
      contextRef="i_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember"
      decimals="-5"
      id="c107876379"
      unitRef="USD">4400000</us-gaap:TaxCreditCarryforwardAmount>
    <nwpx:TaxCreditCarryforwardExpirationYear
      contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-StateAndLocalJurisdictionMember"
      id="c107876380">2023</nwpx:TaxCreditCarryforwardExpirationYear>
    <us-gaap:OperatingLossCarryforwards
      contextRef="i_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember"
      decimals="-5"
      id="c107876383"
      unitRef="USD">8400000</us-gaap:OperatingLossCarryforwards>
    <nwpx:OperatingLossCarryforwardsExpirationYear
      contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember_RangeAxis-MinimumMember"
      id="c107876384">2024</nwpx:OperatingLossCarryforwardsExpirationYear>
    <nwpx:OperatingLossCarryforwardsExpirationYear
      contextRef="d_2023-01-01_2023-12-31_IncomeTaxAuthorityAxis-ForeignCountryMember_RangeAxis-MaximumMember"
      id="c107876385">2033</nwpx:OperatingLossCarryforwardsExpirationYear>
    <us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569435">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; background-color: rgba(0, 0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Unrecognized income tax benefits, beginning of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; background-color: rgba(0, 0, 0, 0);"&gt;4,472&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,366&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;4,350&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Increases for positions taken in prior years&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;264&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;106&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;16&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Unrecognized income tax benefits, end of year&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0);"&gt;4,736&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,472&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,366&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875553"
      unitRef="USD">4472000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2021-12-31"
      decimals="-3"
      id="c107875554"
      unitRef="USD">4366000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c107875555"
      unitRef="USD">4350000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875556"
      unitRef="USD">264000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875557"
      unitRef="USD">106000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875558"
      unitRef="USD">16000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875559"
      unitRef="USD">4736000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875560"
      unitRef="USD">4472000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2021-12-31"
      decimals="-3"
      id="c107875561"
      unitRef="USD">4366000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued
      contextRef="i_2023-12-31"
      decimals="-5"
      id="c107876394"
      unitRef="USD">400000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued
      contextRef="i_2022-12-31"
      decimals="-5"
      id="c107876395"
      unitRef="USD">100000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued>
    <us-gaap:ComprehensiveIncomeNoteTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569436">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;18.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;ACCUMULATED OTHER COMPREHENSIVE LOSS:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;Accumulated other comprehensive loss consists of the following (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Pension liability adjustment, net of income tax benefit of $&lt;span style="-sec-ix-hidden:c107876544"&gt;482 &lt;/span&gt;and $&lt;span style="-sec-ix-hidden:c107876545"&gt;592&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;(1,193&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;(1,532&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unrealized gain (loss) on foreign currency forward contracts designated as cash flow hedges, net of income tax (expense) benefit of $&lt;span style="-sec-ix-hidden:c107876546"&gt;12 &lt;/span&gt;and $(&lt;span style="-sec-ix-hidden:c107876547"&gt;33&lt;/span&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;94&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unrealized gain on interest rate swaps designated as cash flow hedges, net of income tax expense of $&lt;span style="-sec-ix-hidden:c107876548"&gt;79 &lt;/span&gt;and $&lt;span style="-sec-ix-hidden:c107876549"&gt;213&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;246&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;649&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 68%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(960&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(789&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table summarizes changes in the components of Accumulated other comprehensive loss (in thousands). All amounts are net of income tax:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Pension Liability Adjustment&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gain (Loss) on Foreign Currency Forward Contracts Designated as Cash Flow Hedges&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gain on Interest Rate Swaps Designated as Cash Flow Hedges&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Balances, December 31, 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,487&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(195&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,682&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Other comprehensive income (loss) before reclassifications&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;41&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(100&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;678&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;619&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 36%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: -9pt;"&gt;Amounts reclassified from Accumulated other comprehensive loss&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(86&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;389&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(29&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;274&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 36%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: -9pt;"&gt;Net current period adjustments to Other comprehensive income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(45&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;289&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;649&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;893&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Balances, December 31, 2022&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,532&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;94&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;649&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(789&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: -9pt;"&gt;Other comprehensive income (loss) before reclassifications&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;338&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(115&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;142&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;365&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: -9pt;"&gt;Amounts reclassified from Accumulated other comprehensive loss&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(545&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(536&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: -9pt;"&gt;Net current period adjustments to Other comprehensive loss&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;339&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(107&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(403&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(171&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Balances, December 31, 2023&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(1,193&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;246&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(960&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table provides additional detail about Accumulated other comprehensive loss components that were reclassified to the Consolidated Statements of Operations (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Amount reclassified from Accumulated Other Comprehensive Loss&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Affected line item in the Consolidated&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"&gt;&lt;b&gt;Details about Accumulated Other&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Statements&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 34%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"&gt;&lt;b&gt;Comprehensive Loss Components&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;of Operations&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Pension liability adjustment:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Net periodic pension cost:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Service cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(7&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Cost of sales&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Non-service cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;11&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;127&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;110&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Other income&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Associated income tax (expense) benefit&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(28&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(25&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Income tax expense&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;86&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;78&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unrealized gain (loss) on foreign currency forward contracts:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Gain (loss) on cash flow hedges&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;99&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;163&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(72&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Net sales&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Loss on cash flow hedges&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(109&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(680&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Property and equipment&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Associated income tax benefit&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;128&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;18&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Income tax expense&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(8&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(389&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(54&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unrealized gain on interest rate swaps:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Gain on cash flow hedges&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;719&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;39&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Interest expense&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Associated income tax expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(174&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(10&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;&lt;em style="font: inherit;"&gt;Income tax expense&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;545&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;29&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;"&gt;Total reclassifications for the period&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;536&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(274&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;24&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:ComprehensiveIncomeNoteTextBlock>
    <us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569437">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 68%;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Pension liability adjustment, net of income tax benefit of $&lt;span style="-sec-ix-hidden:c107876544"&gt;482 &lt;/span&gt;and $&lt;span style="-sec-ix-hidden:c107876545"&gt;592&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;(1,193&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;(1,532&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unrealized gain (loss) on foreign currency forward contracts designated as cash flow hedges, net of income tax (expense) benefit of $&lt;span style="-sec-ix-hidden:c107876546"&gt;12 &lt;/span&gt;and $(&lt;span style="-sec-ix-hidden:c107876547"&gt;33&lt;/span&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;94&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unrealized gain on interest rate swaps designated as cash flow hedges, net of income tax expense of $&lt;span style="-sec-ix-hidden:c107876548"&gt;79 &lt;/span&gt;and $&lt;span style="-sec-ix-hidden:c107876549"&gt;213&lt;/span&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;246&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;649&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 68%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: Times New Roman;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(960&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(789&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax
      contextRef="i_2023-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107875566"
      unitRef="USD">1193000</us-gaap:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax
      contextRef="i_2022-12-31_RetirementPlanTypeAxis-PensionPlansDefinedBenefitMember"
      decimals="-3"
      id="c107875567"
      unitRef="USD">1532000</us-gaap:AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax>
    <us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107875568"
      unitRef="USD">-13000</us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax>
    <us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember"
      decimals="-3"
      id="c107875569"
      unitRef="USD">94000</us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax>
    <us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107875570"
      unitRef="USD">246000</us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax>
    <us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember"
      decimals="-3"
      id="c107875571"
      unitRef="USD">649000</us-gaap:AociLossCashFlowHedgeCumulativeGainLossAfterTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2023-12-31"
      decimals="-4"
      id="c107875572"
      unitRef="USD">-960000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2022-12-31"
      decimals="-3"
      id="c107875573"
      unitRef="USD">-789000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <nwpx:ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569438">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Pension Liability Adjustment&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gain (Loss) on Foreign Currency Forward Contracts Designated as Cash Flow Hedges&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gain on Interest Rate Swaps Designated as Cash Flow Hedges&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Balances, December 31, 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,487&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(195&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,682&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Other comprehensive income (loss) before reclassifications&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;41&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(100&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;678&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;619&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 36%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: -9pt;"&gt;Amounts reclassified from Accumulated other comprehensive loss&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(86&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;389&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(29&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;274&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 36%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: -9pt;"&gt;Net current period adjustments to Other comprehensive income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(45&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;289&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;649&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;893&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Balances, December 31, 2022&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1,532&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;94&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;649&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(789&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: -9pt;"&gt;Other comprehensive income (loss) before reclassifications&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;338&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(115&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;142&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;365&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: -9pt;"&gt;Amounts reclassified from Accumulated other comprehensive loss&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(545&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(536&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: -9pt;"&gt;Net current period adjustments to Other comprehensive loss&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;339&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(107&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(403&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(171&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Balances, December 31, 2023&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(1,193&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;246&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(960&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </nwpx:ScheduleOfChangesInAccumulatedOtherComprehensiveIncomeLossTableTextBlock>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875578"
      unitRef="USD">-1487000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875579"
      unitRef="USD">-195000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875580"
      unitRef="USD">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875581"
      unitRef="USD">-1682000</us-gaap:StockholdersEquity>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875582"
      unitRef="USD">41000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-5"
      id="c107875583"
      unitRef="USD">-100000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875584"
      unitRef="USD">678000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875585"
      unitRef="USD">619000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875586"
      unitRef="USD">86000</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875587"
      unitRef="USD">-389000</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875588"
      unitRef="USD">29000</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875589"
      unitRef="USD">-274000</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875590"
      unitRef="USD">-45000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875591"
      unitRef="USD">289000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875592"
      unitRef="USD">649000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2022-01-01_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875593"
      unitRef="USD">893000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875594"
      unitRef="USD">-1532000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875595"
      unitRef="USD">94000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875596"
      unitRef="USD">649000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2022-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875597"
      unitRef="USD">-789000</us-gaap:StockholdersEquity>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875598"
      unitRef="USD">338000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875599"
      unitRef="USD">-115000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875600"
      unitRef="USD">142000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875601"
      unitRef="USD">365000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875602"
      unitRef="USD">-1000</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875603"
      unitRef="USD">-8000</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875604"
      unitRef="USD">545000</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875605"
      unitRef="USD">536000</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875606"
      unitRef="USD">339000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875607"
      unitRef="USD">-107000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875608"
      unitRef="USD">-403000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2023-01-01_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875609"
      unitRef="USD">-171000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-12-31_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875610"
      unitRef="USD">-1193000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875611"
      unitRef="USD">-13000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875612"
      unitRef="USD">246000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-4"
      id="c107875613"
      unitRef="USD">-960000</us-gaap:StockholdersEquity>
    <us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569439">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Amount reclassified from Accumulated Other Comprehensive Loss&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Affected line item in the Consolidated&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"&gt;&lt;b&gt;Details about Accumulated Other&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Statements&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 34%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: center;"&gt;&lt;b&gt;Comprehensive Loss Components&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;of Operations&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Pension liability adjustment:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Net periodic pension cost:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Service cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(13&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(7&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Cost of sales&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Non-service cost&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;11&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;127&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;110&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Other income&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Associated income tax (expense) benefit&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(28&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(25&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Income tax expense&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(1&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;86&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;78&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unrealized gain (loss) on foreign currency forward contracts:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Gain (loss) on cash flow hedges&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;99&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;163&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(72&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Net sales&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Loss on cash flow hedges&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(109&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(680&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Property and equipment&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Associated income tax benefit&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;128&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;18&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Income tax expense&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(8&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(389&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(54&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Unrealized gain on interest rate swaps:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Gain on cash flow hedges&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;719&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;39&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 18%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;em style="font: inherit;"&gt;Interest expense&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Associated income tax expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(174&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(10&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;&lt;em style="font: inherit;"&gt;Income tax expense&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;545&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;29&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 18%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 34%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 34%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 18pt; font-size: 10pt; font-family: Times New Roman;"&gt;Total reclassifications for the period&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;536&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;(274&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;24&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 18%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ReclassificationOutOfAccumulatedOtherComprehensiveIncomeTableTextBlock>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875626"
      unitRef="USD">-13000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875627"
      unitRef="USD">-13000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875628"
      unitRef="USD">-7000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875630"
      unitRef="USD">11000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875631"
      unitRef="USD">127000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-4"
      id="c107875632"
      unitRef="USD">110000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875634"
      unitRef="USD">-1000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875635"
      unitRef="USD">28000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875636"
      unitRef="USD">25000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875638"
      unitRef="USD">-1000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875639"
      unitRef="USD">86000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedDefinedBenefitPlansAdjustmentMember"
      decimals="-3"
      id="c107875640"
      unitRef="USD">78000</us-gaap:NetIncomeLoss>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875642"
      unitRef="USD">99000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875643"
      unitRef="USD">163000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875644"
      unitRef="USD">-72000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875646"
      unitRef="USD">-109000</us-gaap:PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease>
    <us-gaap:PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-4"
      id="c107875647"
      unitRef="USD">-680000</us-gaap:PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease>
    <us-gaap:PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875648"
      unitRef="USD">0</us-gaap:PropertyPlantAndEquipmentGrossPeriodIncreaseDecrease>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875650"
      unitRef="USD">-2000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875651"
      unitRef="USD">-128000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875652"
      unitRef="USD">-18000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875654"
      unitRef="USD">-8000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875655"
      unitRef="USD">-389000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-ForeignExchangeForwardMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875656"
      unitRef="USD">-54000</us-gaap:NetIncomeLoss>
    <us-gaap:InterestExpense
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875658"
      unitRef="USD">719000</us-gaap:InterestExpense>
    <us-gaap:InterestExpense
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875659"
      unitRef="USD">39000</us-gaap:InterestExpense>
    <us-gaap:InterestExpense
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875660"
      unitRef="USD">0</us-gaap:InterestExpense>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875662"
      unitRef="USD">174000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-4"
      id="c107875663"
      unitRef="USD">10000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875664"
      unitRef="USD">-0</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875666"
      unitRef="USD">545000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875667"
      unitRef="USD">29000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31_DerivativeInstrumentRiskAxis-InterestRateSwapMember_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember_StatementEquityComponentsAxis-AccumulatedGainLossNetCashFlowHedgeParentMember"
      decimals="-3"
      id="c107875668"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-01-01_2023-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875670"
      unitRef="USD">536000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2022-01-01_2022-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875671"
      unitRef="USD">-274000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-12-31_ReclassificationOutOfAccumulatedOtherComprehensiveIncomeAxis-ReclassificationOutOfAccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c107875672"
      unitRef="USD">24000</us-gaap:NetIncomeLoss>
    <us-gaap:SegmentReportingDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569440">
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: top;"&gt;&lt;td style="width: 36pt;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;19.&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: auto;"&gt; &lt;p style="font-family: 'Times New Roman', Times, serif;font-size: 10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;&lt;b&gt;SEGMENT INFORMATION:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The operating segments reported below are based on the nature of the products sold and the manufacturing process used by the Company and are the segments of the Company for which separate financial information is available and for which operating results are regularly evaluated by the Company&#x2019;s chief operating decision maker, its Chief Executive Officer, to make decisions about resources to be allocated to the segment and assess its performance. Management evaluates segment performance based on gross profit. The Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; allocate selling, general, and administrative expenses, interest, other non-operating income or expense items, or taxes to segments.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company&#x2019;s Engineered Steel Pressure Pipe (SPP) segment manufactures large-diameter, high-pressure steel pipeline systems for use in water infrastructure applications, which are primarily related to drinking water systems. These products are also used for hydroelectric power systems, wastewater systems, seismic resiliency, and other applications. In addition, SPP makes products for industrial plant piping systems and certain structural applications. SPP has manufacturing facilities located in Portland, Oregon; Adelanto and Tracy, California; Parkersburg, West Virginia; Saginaw, Texas; St.&#160;Louis, Missouri; and San Luis R&#xed;o Colorado, Mexico.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The Company&#x2019;s Precast Infrastructure and Engineered Systems (Precast) segment manufactures stormwater and wastewater technology products, high-quality precast and reinforced concrete products, including reinforced concrete pipe, manholes, box culverts, vaults, and catch basins, pump lift stations, oil water separators, biofiltration units, and other environmental and engineered solutions. Precast has manufacturing facilities located in Dallas, Houston, and San Antonio, Texas; and Orem, Salt Lake City, and St. George, Utah.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table disaggregates revenue as well as other financial information based on the Company&#x2019;s reportable segments (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Net sales:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Engineered Steel Pressure Pipe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;296,381&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;307,572&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;259,823&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Precast Infrastructure and Engineered Systems&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;147,974&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;150,093&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;73,490&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;444,355&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;457,665&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;333,313&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Gross profit:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Engineered Steel Pressure Pipe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;42,427&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;44,473&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;31,281&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Precast Infrastructure and Engineered Systems&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;35,215&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;41,382&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;12,973&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;77,642&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;85,855&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;44,254&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Depreciation and amortization expense:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Engineered Steel Pressure Pipe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,000&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,789&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,524&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Precast Infrastructure and Engineered Systems&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,241&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,807&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,738&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;15,241&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;16,596&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;13,262&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Corporate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;565&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;507&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;362&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,806&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,103&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;13,624&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Capital expenditures:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Engineered Steel Pressure Pipe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;11,154&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;8,211&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;7,538&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Precast Infrastructure and Engineered Systems&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,503&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;13,925&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,255&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;17,657&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;22,136&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,793&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Corporate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;634&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;693&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;469&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;18,291&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;22,829&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;13,262&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:justify;margin:0pt;"&gt;The following table disaggregates total assets based on the Company&#x2019;s reportable segments (in thousands):&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Total assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Engineered Steel Pressure Pipe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;307,856&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;307,924&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Precast Infrastructure and Engineered Systems&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;255,904&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;256,520&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;563,760&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;564,444&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Corporate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;34,121&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;36,896&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;597,881&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;601,340&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;a href="#" id="notesend" title="notesend"&gt;&lt;/a&gt;&lt;/p&gt;
  </us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock
      contextRef="d_2023-01-01_2023-12-31"
      id="D5E9B5CA-5D7C-4991-95CA-BA6FE7221425">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 33%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Net sales:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Engineered Steel Pressure Pipe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;296,381&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;307,572&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;259,823&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Precast Infrastructure and Engineered Systems&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;147,974&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;150,093&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;73,490&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;444,355&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;457,665&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;333,313&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Gross profit:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Engineered Steel Pressure Pipe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;42,427&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;44,473&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;31,281&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Precast Infrastructure and Engineered Systems&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;35,215&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;41,382&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;12,973&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;77,642&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;85,855&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;44,254&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Depreciation and amortization expense:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Engineered Steel Pressure Pipe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,000&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,789&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;9,524&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Precast Infrastructure and Engineered Systems&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,241&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,807&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,738&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;15,241&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;16,596&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;13,262&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Corporate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;565&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;507&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;362&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,806&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,103&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;13,624&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Capital expenditures:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; width: 52%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Engineered Steel Pressure Pipe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;11,154&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;8,211&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;7,538&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Precast Infrastructure and Engineered Systems&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,503&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;13,925&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,255&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;17,657&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;22,136&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,793&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; width: 52%;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;Corporate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;634&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;693&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;469&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;18,291&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;22,829&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;13,262&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2022&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Total assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Engineered Steel Pressure Pipe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;307,856&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;307,924&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Precast Infrastructure and Engineered Systems&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;255,904&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;256,520&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;563,760&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;564,444&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Corporate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;34,121&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;36,896&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;597,881&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;601,340&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875684"
      unitRef="USD">296381000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875685"
      unitRef="USD">307572000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875686"
      unitRef="USD">259823000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875687"
      unitRef="USD">147974000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875688"
      unitRef="USD">150093000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-4"
      id="c107875689"
      unitRef="USD">73490000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875690"
      unitRef="USD">444355000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875691"
      unitRef="USD">457665000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875692"
      unitRef="USD">333313000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:GrossProfit
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875693"
      unitRef="USD">42427000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875694"
      unitRef="USD">44473000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875695"
      unitRef="USD">31281000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875696"
      unitRef="USD">35215000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875697"
      unitRef="USD">41382000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875698"
      unitRef="USD">12973000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875699"
      unitRef="USD">77642000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875700"
      unitRef="USD">85855000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875701"
      unitRef="USD">44254000</us-gaap:GrossProfit>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-6"
      id="c107875702"
      unitRef="USD">9000000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875703"
      unitRef="USD">9789000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875704"
      unitRef="USD">9524000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875705"
      unitRef="USD">6241000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875706"
      unitRef="USD">6807000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875707"
      unitRef="USD">3738000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c107875708"
      unitRef="USD">15241000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c107875709"
      unitRef="USD">16596000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c107875710"
      unitRef="USD">13262000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"
      decimals="-3"
      id="c107875711"
      unitRef="USD">565000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"
      decimals="-3"
      id="c107875712"
      unitRef="USD">507000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"
      decimals="-3"
      id="c107875713"
      unitRef="USD">362000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875714"
      unitRef="USD">15806000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875715"
      unitRef="USD">17103000</us-gaap:DepreciationAndAmortization>
    <us-gaap:DepreciationAndAmortization
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875716"
      unitRef="USD">13624000</us-gaap:DepreciationAndAmortization>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875717"
      unitRef="USD">11154000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875718"
      unitRef="USD">8211000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875719"
      unitRef="USD">7538000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875720"
      unitRef="USD">6503000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875721"
      unitRef="USD">13925000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875722"
      unitRef="USD">5255000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c107875723"
      unitRef="USD">17657000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c107875724"
      unitRef="USD">22136000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c107875725"
      unitRef="USD">12793000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2023-01-01_2023-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"
      decimals="-3"
      id="c107875726"
      unitRef="USD">634000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2022-01-01_2022-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"
      decimals="-3"
      id="c107875727"
      unitRef="USD">693000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2021-01-01_2021-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"
      decimals="-3"
      id="c107875728"
      unitRef="USD">469000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2023-01-01_2023-12-31"
      decimals="-3"
      id="c107875729"
      unitRef="USD">18291000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2022-01-01_2022-12-31"
      decimals="-3"
      id="c107875730"
      unitRef="USD">22829000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2021-01-01_2021-12-31"
      decimals="-3"
      id="c107875731"
      unitRef="USD">13262000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:Assets
      contextRef="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875740"
      unitRef="USD">307856000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EngineeredSteelPressurePipeMember"
      decimals="-3"
      id="c107875741"
      unitRef="USD">307924000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-3"
      id="c107875742"
      unitRef="USD">255904000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-PrecastInfrastructureAndEngineeredSystemsMember"
      decimals="-4"
      id="c107875743"
      unitRef="USD">256520000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2023-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-4"
      id="c107875744"
      unitRef="USD">563760000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2022-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c107875745"
      unitRef="USD">564444000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2023-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"
      decimals="-3"
      id="c107875746"
      unitRef="USD">34121000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2022-12-31_ConsolidationItemsAxis-CorporateNonSegmentMember"
      decimals="-3"
      id="c107875747"
      unitRef="USD">36896000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2023-12-31"
      decimals="-3"
      id="c107875748"
      unitRef="USD">597881000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2022-12-31"
      decimals="-4"
      id="c107875749"
      unitRef="USD">601340000</us-gaap:Assets>
    <srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569443">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"&gt;&lt;b&gt;Schedule&lt;/b&gt;&#160;&lt;b&gt;II&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;"&gt;&lt;b&gt;&lt;a href="#" id="sched" title="sched"&gt;&lt;/a&gt;NORTHWEST PIPE COMPANY&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;"&gt;&lt;b&gt;VALUATION AND QUALIFYING ACCOUNTS&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt 0pt 0pt 8pt;"&gt;(Dollars in thousands)&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Balance at Beginning of Period&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Charged to Profit and Loss&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Deduction from Reserves&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Balance at End of Period&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Year Ended December 31, 2023:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Allowance for doubtful accounts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;369&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;189&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(437&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;121&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Valuation allowance for deferred income tax assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,051&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;696&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(106&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,641&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Year Ended December 31, 2022:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Allowance for doubtful accounts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;503&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;442&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(576&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;369&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Valuation allowance for deferred income tax assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;5,899&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;254&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(102&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,051&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Year Ended December 31, 2021:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Allowance for doubtful accounts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;767&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;653&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(917&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;503&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Valuation allowance for deferred income tax assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,228&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(329&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;5,899&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;

  </srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock>
    <nwpx:SummaryOfValuationAndQualifyingAccountsTableTextBlock contextRef="d_2023-01-01_2023-12-31" id="c2569444">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Balance at Beginning of Period&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Charged to Profit and Loss&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Deduction from Reserves&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Balance at End of Period&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Year Ended December 31, 2023:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Allowance for doubtful accounts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;369&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;189&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(437&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;121&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Valuation allowance for deferred income tax assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,051&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;696&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(106&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,641&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Year Ended December 31, 2022:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Allowance for doubtful accounts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;503&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;442&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(576&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;369&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Valuation allowance for deferred income tax assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;5,899&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;254&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(102&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,051&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 36%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Year Ended December 31, 2021:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 13%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Allowance for doubtful accounts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;767&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;653&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(917&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;503&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 36%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Valuation allowance for deferred income tax assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;6,228&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;(329&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;5,899&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </nwpx:SummaryOfValuationAndQualifyingAccountsTableTextBlock>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875755"
      unitRef="USD">369000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875756"
      unitRef="USD">189000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875757"
      unitRef="USD">437000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2023-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875758"
      unitRef="USD">121000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875759"
      unitRef="USD">6051000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875760"
      unitRef="USD">696000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="d_2023-01-01_2023-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875761"
      unitRef="USD">106000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2023-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875762"
      unitRef="USD">6641000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875763"
      unitRef="USD">503000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875764"
      unitRef="USD">442000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875765"
      unitRef="USD">576000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875766"
      unitRef="USD">369000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875767"
      unitRef="USD">5899000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875768"
      unitRef="USD">254000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="d_2022-01-01_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875769"
      unitRef="USD">102000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2022-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875770"
      unitRef="USD">6051000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2020-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875771"
      unitRef="USD">767000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875772"
      unitRef="USD">653000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875773"
      unitRef="USD">917000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-AllowanceForCreditLossMember"
      decimals="-3"
      id="c107875774"
      unitRef="USD">503000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2020-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875775"
      unitRef="USD">6228000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875776"
      unitRef="USD">0</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="d_2021-01-01_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875777"
      unitRef="USD">329000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i_2021-12-31_ValuationAllowancesAndReservesTypeAxis-ValuationAllowanceOfDeferredTaxAssetsMember"
      decimals="-3"
      id="c107875778"
      unitRef="USD">5899000</us-gaap:ValuationAllowancesAndReservesBalance>
    <link:footnoteLink
      xlink:role="http://www.xbrl.org/2003/role/link"
      xlink:type="extended">
        <link:loc
          xlink:href="#c107875222"
          xlink:label="c107875222"
          xlink:type="locator"/>
        <link:footnote id="f96bcedcd-f4ed-4d01-a48d-e74a412797a4" xlink:label="f96bcedcd-f4ed-4d01-a48d-e74a412797a4" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-us">Long-term finance lease liabilities, less current portion are included in Other long-term liabilities.</link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875222"
          xlink:to="f96bcedcd-f4ed-4d01-a48d-e74a412797a4"
          xlink:type="arc"/>
        <link:loc
          xlink:href="#c107875349"
          xlink:label="c107875349"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#c107875351"
          xlink:label="c107875351"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#c107875355"
          xlink:label="c107875355"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#c107875353"
          xlink:label="c107875353"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#c107875347"
          xlink:label="c107875347"
          xlink:type="locator"/>
        <link:footnote id="fd21527d1-0888-4183-929f-7da4fb12316f" xlink:label="fd21527d1-0888-4183-929f-7da4fb12316f" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-us">The number of PSAs disclosed in this table are at the target level of 100%.</link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875349"
          xlink:to="fd21527d1-0888-4183-929f-7da4fb12316f"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875351"
          xlink:to="fd21527d1-0888-4183-929f-7da4fb12316f"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875355"
          xlink:to="fd21527d1-0888-4183-929f-7da4fb12316f"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875353"
          xlink:to="fd21527d1-0888-4183-929f-7da4fb12316f"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875347"
          xlink:to="fd21527d1-0888-4183-929f-7da4fb12316f"
          xlink:type="arc"/>
        <link:loc
          xlink:href="#c107875161"
          xlink:label="c107875161"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#c107875162"
          xlink:label="c107875162"
          xlink:type="locator"/>
        <link:footnote id="fe26a3098-5806-4058-8fc5-a2e5093f95df" xlink:label="fe26a3098-5806-4058-8fc5-a2e5093f95df" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-us">Finance lease right-of-use assets are presented net of accumulated amortization of $1.4 million and $1.2 million as of December 31, 2023 and 2022, respectively.</link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875161"
          xlink:to="fe26a3098-5806-4058-8fc5-a2e5093f95df"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875162"
          xlink:to="fe26a3098-5806-4058-8fc5-a2e5093f95df"
          xlink:type="arc"/>
        <link:loc
          xlink:href="#c107875354"
          xlink:label="c107875354"
          xlink:type="locator"/>
        <link:footnote id="fe288bdd4-0be3-4622-9876-eaf309b29187" xlink:label="fe288bdd4-0be3-4622-9876-eaf309b29187" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-us">For the PSAs vested on March 31, 2023, the actual number of common shares that were issued was determined by multiplying the PSAs at the target level of 100%, as disclosed in this table, by a payout percentage based on the performance-based conditions achieved. The payout percentage was 159% for the 2020-2022 performance period, 126% for the 2021-2022 performance period, and 132% for the 2022 performance period.</link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875354"
          xlink:to="fe288bdd4-0be3-4622-9876-eaf309b29187"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875353"
          xlink:to="fe288bdd4-0be3-4622-9876-eaf309b29187"
          xlink:type="arc"/>
        <link:loc
          xlink:href="#c107875220"
          xlink:label="c107875220"
          xlink:type="locator"/>
        <link:footnote id="f89994dd2-1f3e-4b84-a160-134f75ddc089" xlink:label="f89994dd2-1f3e-4b84-a160-134f75ddc089" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-us">Current portion of finance lease liabilities are included in Accrued liabilities.</link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875220"
          xlink:to="f89994dd2-1f3e-4b84-a160-134f75ddc089"
          xlink:type="arc"/>
        <link:loc
          xlink:href="#c107875035"
          xlink:label="c107875035"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#c107875033"
          xlink:label="c107875033"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#c107875034"
          xlink:label="c107875034"
          xlink:type="locator"/>
        <link:footnote id="f67893c9f-9e9b-4ac4-9a64-1ebfdea502b5" xlink:label="f67893c9f-9e9b-4ac4-9a64-1ebfdea502b5" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-us">There were no antidilutive shares for the years ended December 31, 2023, 2022, or 2021.</link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875035"
          xlink:to="f67893c9f-9e9b-4ac4-9a64-1ebfdea502b5"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875033"
          xlink:to="f67893c9f-9e9b-4ac4-9a64-1ebfdea502b5"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c107875034"
          xlink:to="f67893c9f-9e9b-4ac4-9a64-1ebfdea502b5"
          xlink:type="arc"/>
    </link:footnoteLink>
</xbrl>
</XML>
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>
